2010-09-05 131 views
2

好的......它的一個長問題。但我認爲答案很簡單。儘管我自己找不到解決方案。 t在jsp頁面中有四行。我想在頁面中添加10多行使用循環的字段將有名稱像在jsp頁面中創建動態行

row1_amount, row1_loantype,row1_date, row1_status 
row2_amount, row2_loantype,row2_date, row2_status 

等等。

更清楚

property="cib_borrower_report.loanType"將在表單中的所有十行。

property="cib_borrower_report.loanType1" 
property="cib_borrower_report.loanType2" 
property="cib_borrower_report.loanType3" 

現在,如果我想使用循環做這個命名如何做到這一點?我如何添加1,2,3 ..屬性?

如果我可以動態地做到這一點,它將幫助我獲取值的類型。所以請幫助。

<table border="0" cellpadding="1"><tbody> 
    <tr> 
     <td ><label class="desc"><bean:message key="label.cib.new.report.taken.amount"/></label></td> 
     <td><html:text property="cib_borrower_report.takenAmount" styleClass="SingleLineTextField" size="20"></html:text></td> 
     <td>&nbsp;&nbsp;</td> 

     <td><label class="desc"><bean:message key="label.cib.new.report.loan.type"/></label></td> 
     <td><html:text property="cib_borrower_report.loanType" styleClass="SingleLineTextField" size="20"></html:text></td> 
     <td>&nbsp;&nbsp;</td> 

     <td><label for="cib_borrower_report.reportingDate" class="desc"><bean:message key="label.cib.new.reporting.date" /></label></td> 
     <td> 
      <table><tbody><tr> 
        <td><input type="Text" name="cib_borrower_report.reportingDate" id="cib_borrower_report.reportingDate" style="cib_borrower_report.reportingDate" class="SingleLineTextField" maxlength="10" size="10" tabindex="1" ></td> 

       <td><a href="javascript:NewCal('cib_borrower_report.reportingDate','mmddyyyy')"><img align="middle" src="Images/cal.jpg" width="20" height="20" border="0" alt="Pick a date"></a></td> 
      </tr></tbody></table> 
     </td> 
     <td>&nbsp;&nbsp;</td> 

     <td><label class="desc"><bean:message key="label.cib.new.loan.status"/></label></td> 
     <td align="center"> 
      <html:select property="cib_borrower_report.loanStatus" styleId="searchQuery1"> 
       <html:option value="STD">STD</html:option> 
       <html:option value="SMA">SMA</html:option> 
       <html:option value="SS">SS</html:option> 
       <html:option value="DF">DF</html:option> 
       <html:option value="BL">BL</html:option> 
      </html:select> 
     </td> 
    </tr> 
</tbody></table> 

回答

2

在JSP <foreach/>標籤,你可以使用varStatus屬性的景氣指數,並將其添加到屬性名稱。

 
<c:forEach var="bean" items="${item}" varStatus="status"> 
    Item: <c:out value="${item}"/> 
    Item Index: <c:out value="${status.index}"/> <!-- Starts from zero --> 
    Item Count: <c:out value="${status.count}"/> <!-- Starts from one --> 
</c:forEach> 

我會建議使用列表而不是命名的屬性名稱(看起來更好,並擴展了動態方法)。有了這個列表,你仍然需要循環輸出,但是會有一個更乾淨的JSP(這很難看)。

+0

我明白你的答案。但我是jsp的新手。如果你給我一個例子,這將是有益的 – riyana 2010-09-05 07:30:52

1

Struts的標籤庫的邏輯,你可以使用迭代標籤作爲上Svtruts 1.x的現場記錄:

重複此標籤的嵌套主體內容 在指定 集合

你會對你的代碼結構如下:

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 
<table><tbody> 
<logic:iterate id="formName" name="mycollection"> 
    <tr> 
     <!-- CONTENT OF EACH ROW --> 
    </tr> 
</logic:iterate> 
</tbody></table> 

對於你需要,你可以通過它們的索引來訪問你的財產的那種互動如下:

<logic:iterate id="formName" name="mycollection" indexId="idx"> 
    <html:text name="formName" property='<%= "mycollection[" + idx + "].prop" />' /> 
</logic:iterate> 

這將產生具有類似MyCollection的name屬性的文本字段[0]。道具將更新道具的屬性的元素收集mycollection如果包含此邏輯的表單被提交。

還要注意的是,Struts的團隊鼓勵你只使用Struts標籤,你不能使用JSTL那些Struts的1.x的站點說明:

注:一些功能在這 的taglib也可在 JavaServer Pages標準標籤庫 (JSTL)中獲得。 Struts團隊鼓勵 在可能的情況下通過 Struts特定標籤使用標準標籤。