Потеря данных при повторении таблицы по строкам с помощью Java и JSP

#java #javascript #html #jsp

#java #javascript #HTML #jsp

Вопрос:

На странице jsp, в зависимости от количества записей, этот tr будет выполнен и показан пользователям.

 for(int i=0; i<NoOfRecords.length;i  ){
<tr>
    <td width="15%"> Transit Account amp; <%= acctId%>
    </td>
    <td width="15%"> <%=MultiModeConstants.GL_ACCT_NO%>
    </td>
    <td width="45%">
    <input type="text" id="multiModeAcctNo" name="multiModeAcctNo" desc="Multi Mode Transit Account Number" maxlength="9" class="body" size="9" tabindex="3" >
    </td>
    <td width="15%">
        Deposit
    </td>
    <td width="15%">
        $ <%= transactioAmount%>
    </td>
</tr>
}
  

В зависимости от количества записей на странице jsp будет заполнено количество строк,
multiModeAcctNo, поле будет введено пользователем (multiModeAcctNo);

Например, если имеется 4 записи, я 4 раза ввожу разные multiModeAcctNo на странице.

После отправки страницы я могу получить только первое поле, я теряю остальные 3 значения.

Предположим, если я прочитаю только одну строку, то смогу нормально получить данные. Что мне нужно сделать?

Я использую java и jsp в качестве языков программирования.

Комментарии:

1. Хотя вы выполняете итерацию до полной длины, вы не получаете индекс для каждого значения объекта. И как вы сохранили значение в своем объекте? Сначала проверьте какой-нибудь пример того, как выполнять итерацию по содержимому объекта java-tips.org/java-se-tips/java.lang/the-enhanced-for-loop.html

Ответ №1:

Вам необходимо создать динамические имена для полей ввода, которые могут быть такими:

 for(int i=0; i<NoOfRecords.length;i  ){
<tr>
    <td width="15%"> Transit Account amp; <%= acctId%>
    </td>
    <td width="15%"> <%=MultiModeConstants.GL_ACCT_NO%>
    </td>
    <td width="45%">
    <input type="text" id="multiModeAcctNo_<%=i%>" name="multiModeAcctNo_<%=i%>" desc="Multi Mode Transit Account Number" maxlength="9" class="body" size="9" tabindex="3" >
    </td>
    <td width="15%">
        Deposit
    </td>
    <td width="15%">
        $ <%= transactioAmount%>
    </td>
</tr>
}
  

Теперь в вашем сервлете [надеюсь, что вы также не получите NoOfRecords.длина там] получает значение каждого ввода, предоставляя его динамически генерируемые имена. Может быть как:

 String str = new String[NoOfRecords.length];
for(int i=0; i<NoOfRecords.length;i  ){
    str[i] = request.getParameter("multiModeAcctNo_" i);
}
  

Ответ №2:

Я не уверен, какой тип отправки вы делаете, но вы можете захотеть использовать другой идентификатор для своего поля ввода, поскольку при повторении вы используете тот же multiModeAcctNo идентификатор в своем <input> .

Если вы используете форму и публикуете элемент, который вы можете назвать input чем-то вроде multiModeAcctNo[] , то в вашем JSP-файле укажите его как элемент массива POST (не уверен, возможно ли это с Java). Просто идея.