我已经找到了我的问题的解决方案。它可能不是最好的,但它的工作原理。我添加了一个我创建的Java类的参数。它包含一个列表和一个方法,它接收我需要的字段的id和来自jasper的页码参数。我用它来建立我的列表。然后在Jasper报告中,我有一个标签只用于在我的bean中调用方法。然后,所有我需要做的就是把索引表中总结带,并告诉它来从列表我built.In碧玉值:
<textFieldExpression class="java.lang.String"><![CDATA[$P{indexData}.addByIndex($F{numberInList},$F{indexLabel},$V{PAGE_NUMBER} + "")]]></textFieldExpression>
在Java
public class ReportIndexDataAction {
private List<ReportIndexData> reportIndexDataList;
public ReportIndexDataAction() {
reportIndexDataList = new ArrayList<ReportIndexData>();
}
public List<ReportIndexData> getReportIndexDataList() {
return reportIndexDataList;
}
public void setReportIndexDataList(List<ReportIndexData> reportIndexDataList) {
this.reportIndexDataList = reportIndexDataList;
}
public String addByIndex(int index, String name, String page) {
boolean found = false;
for (Iterator iterator = reportIndexDataList.iterator(); iterator.hasNext();) {
ReportIndexData type = (ReportIndexData) iterator.next();
if(type.getIndex() == index) {
if(!type.getUsages().contains(","+ page + ",")) {
type.setUsages((type.getUsages().isEmpty() ? "," + page +"," : type.getUsages() + page + ","));
}
found = true;
break;
}
}
if(!found) {
ReportIndexData data = new ReportIndexData();
data.setIndex(index);
data.setName(name);
data.setUsages(","+ page + ",");
reportIndexDataList.add(data);
}
return "";
}
和
public class ReportIndexData {
private int index;
private String name;
private String usages;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsages() {
return usages;
}
public void setUsages(String usages) {
this.usages = usages;
}
}
你有什么可以证明你试过的东西吗? – Magnilex 2013-03-08 14:51:23
显示你的努力'你的代码'? – 2013-03-08 15:07:20
我没有获取每个元素的页码的任何代码,我确实有报告的树层次结构部分,但在这里没有任何帮助。我在帖子中说,我甚至不知道从哪里开始获取页码。我到现在为止一直在努力寻找解决方案。我甚至不想要一个完整的解决方案。任何提示都会有所帮助。 – SFlorin 2013-03-08 15:18:30