динамическое создание строки на странице JSP - PullRequest
2 голосов
/ 05 сентября 2010

хорошо ... это длинный вопрос.но я думаю, что ответ прост.хотя я не могу найти решение сам.не должно быть четырех столбцов подряд на странице jsp.Я хотел бы добавить еще 10 строк, используя цикл на странице, где поля будут иметь такие имена, как

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>

Ответы [ 3 ]

2 голосов
/ 05 сентября 2010

В теге 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 (что некрасиво для начала).

1 голос
/ 21 октября 2010

В библиотеке логики Struts вы можете использовать тег iterate , как описано на сайте 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 [0] .prop , которое обновит свойство prop элемента 0 для collection mycollection , если отправлена ​​форма, содержащая эту логику.

Также обратите внимание, что команда Struts рекомендует вам использовать теги Struts только там, где вы не можете использовать теги JSTL, как указано на сайте Struts 1.x:

Примечание: некоторые функции в этом taglib также доступны в Стандартная библиотека тегов JavaServer Pages (JSTL). Команда Struts поощряет использование стандартных тегов над По возможности структурирует определенные теги.

1 голос
/ 05 сентября 2010

Чтобы сделать цикл на странице JSP, вы можете использовать JSTL <c:forEach>.Вам нужно будет загрузить реализацию JSTL, см. Ссылки ниже.


Ресурсы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...