2010-09-05 6 views
2

ok ... c'est une longue question. mais je pense que la réponse est simple. mais je ne peux pas trouver la solution moi-même. t avoir les quatre colonnes dans une rangée dans une page jsp. Je voudrais ajouter 10 lignes supplémentaires en utilisant une boucle dans la page où les champs auront un nom commeligne dynamique créer en jsp page

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

et ainsi de suite.

plus clairement

property="cib_borrower_report.loanType" serait dans les dix lignes de la forme.

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

maintenant si je veux faire cette appellation en utilisant la boucle comment faire? comment puis-je ajouter 1,2,3 .. dans la propriété ??? Si je peux le faire dynamiquement, cela m'aidera dans le type de récupération des valeurs. alors aidez s'il vous plaît.

<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> 

Répondre

2

dans la balise JSP <foreach/> vous pouvez obtenir l'index à l'aide varStatus attribut et l'ajouter au nom de la propriété.

 
<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> 

Je suggérerais d'utiliser une liste à la place des noms de propriété nommés (cela semble mieux et étend l'approche dynamique). Avec la liste vous devez toujours boucler sur la sortie, mais aura un JSP beaucoup plus propre (ce qui est moche pour commencer).

+0

Je comprends votre réponse. mais je suis nouveau à jsp. et il serait utile que vous me donniez un exemple – riyana

1

sur la logique des entretoises taglib vous pouvez utiliser la itérer tag comme cela est documenté sur le site 1.x Svtruts:

Répétez le contenu du corps imbriqué de cette balise sur une collection spécifiée

Vous aura la structure suivante sur votre code:

<%@ 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> 

Pour l'interaction en nature dont vous avez besoin, vous pouvez accéder à vos propriétés par leur index comme suit:

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

Cela va générer un champ de texte avec l'attribut name comme MaCollection [0].prop qui mettra à jour la propriété prop de l'élément pour la collection mycollection si le formulaire contenant cette logique est soumis.

Notez également que l'équipe Struts vous encourage à utiliser uniquement les balises entretoises où vous ne pouvez pas utiliser les JSTL comme indiqué sur le site 1.x Struts:

Note: Certaines des caractéristiques de cette taglib sont également disponibles dans la bibliothèque de balises JavaServer Pages standard JSTL ( ). L'équipe de Struts encourage l'utilisation des étiquettes standard sur les étiquettes spécifiques Struts lorsque cela est possible.

Questions connexes