我收到很難產生顯示:有嵌套列表的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'的表結構。請幫助
如果您需要更多信息,請告知我。 在此先感謝。要做到這一點