我收到很难产生显示:有嵌套列表的3层我的JSP页面上表:JSP/STRUTS2:<display:table>:如何从嵌套列表创建表?
我的主类是“ExpenditureTotalsByRegions”有“ExpenditureTotalsByTypes” “ExpenditureTotalsByTypes”的名单有一个名单“ExpenditureTotalsByProjects”
的主要问题是:行数和列在此表中编号可以用作变化: 数量的区域可能会有所不同的; 类型的数量可能会有所不同/地区; 若干项目变化/类型
JSP页面获取的“ExpenditureTotalsByRegions”清单,并应该看起来像:
Region 1
----------------------------------------------------------
Types | Project 1 | Project 2
----------------------------------------------------------
type1 | $1,000 | $2,000
type2 | $2,000 | $2,500
Region 2
----------------------------------------------------------
Types | Project 1 | Project 3 |Project 4
----------------------------------------------------------
type3 | $3,000 | $4,000 | $5,000
type4 | $3,500 | $4,500 | $5,500
type5 | $3,550 | $4,550 | $5,550
(在上面的例子:“区域1”,区域2' 是地区名称,“类型1”,“类型2”等是类型的名称,“项目1”,“项目2”等是项目的名称,$支出是在项目中花费的实际数量)
主分类:
public class ExpenditureTotalsByRegions {
protected String fRegion = null;
protected List<ExpenditureTotalsByTypes> fTypeExpenditures = new ArrayList<ExpenditureTotalsByTypes>();
public ExpenditureTotalsByRegions(String region,List<ExpenditureTotalsByTypes> typeExpenditures) {
fRegion = region;
fTypeExpenditures = typeExpenditures;
}
public String getRegion() {
return fRegion;
}
public void setRegion(String region) {
fRegion = region;
}
public List<ExpenditureTotalsByTypes> getTypeExpenditures() {
return fTypeExpenditures ;
}
public void setTypeExpenditures(List<ExpenditureTotalsByTypes> typeExpenditures) {
fTypeExpenditures = typeExpenditures;
}
}
现在, 'ExpenditureType' 类的样子:
public class ExpenditureTotalsByTypes{
protected String fTypeName;
protected List<ExpenditureTotalsByProjects> fProjectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
public String getTypeName() {
return fTypeName;
}
public void setTypeName(String typeName) {
fTypeName= typeName;
}
public List<ExpenditureTotalsByProjects> getProjectExpenditures() {
return fProjectExpenditures;
}
public void setProjectExpenditures(List<ExpenditureTotalsByProjects> projectExpenditures) {
fProjectExpenditures = projectExpenditures;
}
}
现在的“ExpenditureTotalsByProjects:类看起来像:
public class ExpenditureTotalsByProjects {
protected String fProjectName;
protected Double fProjectExpenditure;
public ExpenditureTotalsByProjects(String projectName, Double projectExpenditure) {
fProjectName = projectName;
fProjectExpenditure = projectExpenditure;
}
public String getProjectName() {
return fProjectName;
}
public void setProjectName(String projectName) {
fProjectName = projectName;
}
public Double getProjectExpenditure() {
return fProjectExpenditure;
}
public void setProjectExpenditure(Double projectExpenditure) {
fProjectExpenditure = projectExpenditure;
}
}
我的动作类的样子:
public class ExpendituresTotalsReportByRegionsAction extends ActionBase {
protected List<ExpenditureTotalsByRegions> fTableData = new ArrayList<ExpenditureTotalsByRegions>();
public ExpendituresTotalsReportByRegionsAction(JpaTransactionManager transactionManager) {
super(transactionManager);
}
@Override
public String execute() throws Exception {
if (fYear != 0) {
fTableData = reportDao.getExpenditureTotalsReportByRegions(fYear);
}
return SUCCESS;
}
public List<ExpenditureTotalsByRegions> getTableData() {
return fTableData;
}
}
现在,我正在试图在JSP页面上构建表并获取ru n时间错误:
<body>
<div class="container">
<div class="prepend-1"><br>
<display:table id="reportTable"
name="tableData"
requestURI=""
cellspacing="0px"
export="true"
class="displaytagTable">
<display:setProperty name="decorator.media.html"
value="gov.doi.expenditures.decorator.TotalSpeciesDecorator"/>
<display:setProperty name="decorator.media.rtf"
value="gov.doi.expenditures.decorator.ItextTotalSpeciesDecorator"/>
<display:setProperty name="decorator.media.pdf"
value="gov.doi.expenditures.decorator.ItextTotalSpeciesDecorator"/>
<display:caption class="titleText ">${reportTable.region}</display:caption>
<c:forEach items="${reportTable.typeExpenditures}" var="typeList">
<display:column title="Types" property="${typeList}.typeName"/>
<c:forEach items="${typeList.projectExpenditures}" var="projectList">
<display:column title="${projectList}.projectName" property="${projectList}.projectExpenditure"/>
</c:forEach>
</c:forEach>
</display:table>
</div>
</div>
</body>
测试数据:
List<ExpenditureTotalsByProjects> projectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
List<ExpenditureTotalsByTypes> TypesExpenditures = new ArrayList<ExpenditureTotalsByTypes>();
List<ExpenditureTotalsByRegions> regionExpenditures = new ArrayList<ExpenditureTotalsByRegions>();
//Test data for reg1
projectExpenditures.add(new ExpenditureTotalsByProjects("project1",1000.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project2",2000.00));
//1st Types with 2 projects in reg1
ExpenditureTotalsByTypes sp1 = new ExpenditureTotalsByTypes();
sp1.setTypes("Types1");
sp1.setProjectExpenditures(projectExpenditures);
TypesExpenditures.add(sp1);
//2nd Types with 2 projects in reg1
projectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
projectExpenditures.add(new ExpenditureTotalsByProjects("project1",1500.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project2",2500.00));
ExpenditureTotalsByTypes sp2 = new ExpenditureTotalsByTypes();
sp2.setTypes("Types2");
sp2.setProjectExpenditures(projectExpenditures);
TypesExpenditures.add(sp2);
//regionExpenditures.add(new ExpenditureTotalsByRegions("reg1",TypesExpenditures));
tableData.add(new ExpenditureTotalsByRegions("reg1",TypesExpenditures));
//Test data for reg2
TypesExpenditures = new ArrayList<ExpenditureTotalsByTypes>();
projectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
projectExpenditures.add(new ExpenditureTotalsByProjects("project3",3000.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project4",4000.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project5",5000.00));
sp1 = new ExpenditureTotalsByTypes();
sp1.setTypes("Types3");
sp1.setProjectExpenditures(projectExpenditures);
TypesExpenditures.add(sp1);
projectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
projectExpenditures.add(new ExpenditureTotalsByProjects("project3",3500.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project4",4500.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project5",5500.00));
sp2 = new ExpenditureTotalsByTypes();
sp2.setTypes("Types4");
sp2.setProjectExpenditures(projectExpenditures);
TypesExpenditures.add(sp2);
projectExpenditures = new ArrayList<ExpenditureTotalsByProjects>();
projectExpenditures.add(new ExpenditureTotalsByProjects("project3",3550.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project4",4550.00));
projectExpenditures.add(new ExpenditureTotalsByProjects("project5",5550.00));
ExpenditureTotalsByTypes sp3 = new ExpenditureTotalsByTypes();
sp3.setTypes("Types5");
sp3.setProjectExpenditures(projectExpenditures);
TypesExpenditures.add(sp3);
tableData.add(new ExpenditureTotalsByRegions("reg2",TypesExpenditures));
收到错误: “了java.lang.RuntimeException:了java.lang.RuntimeException:javax.servlet.jsp.JspException:错误查找财产”,但我还需要帮助与'forEach'的表结构。请帮助
如果您需要更多信息,请告知我。 在此先感谢。要做到这一点