#java #jsp #struts2
#java #jsp #struts2
Вопрос:
Я использую Struts2 для отображения содержимого списка объектов в JSP. Поток событий выглядит следующим образом:
- GetDataAction.java -> извлекает значения из базы данных, заполняет ArrayList с именем
tableList
. При успешном выполнении отображаетсяdisplayData.jsp
. - displayData.jsp -> использует
s:iterate
тег для отображения значений объектов вtableList
. - Пользователь изменяет некоторые значения в
displayData.jsp
и нажимает на кнопку Обновить. При нажатии кнопки Обновить, выполняется действие UpdateDataAction.вызывается java.
Теперь моя проблема в том, как мне использовать тот же список таблиц в UpdateDataAction.java для получения измененных значений? Я попытался объявить ArrayList с тем же именем ‘tableList’ (вместе с получателями и установщиками) в UpdateDataAction.java, но она выдает исключение NullPointerException.
Пожалуйста, предложите.
Комментарии:
1. как вы обновляете значения в
displayData.jsp
? Вы обновляете более одной строки за раз?2. Тем не менее, мне нужно посмотреть, как вы обновляете значения в этом списке. Используете ли вы скрытое текстовое поле после каждого значения или используете какой-то плагин. Можете ли вы показать мне эту часть кода?
3. @anu: Я просто показываю несколько тестовых полей для каждого элемента строки, в которые пользователь может ввести некоторое значение.
4. Попробуйте поместить свой контент в объект JSON и отправить его на серверную часть через Ajax, чтобы обновить содержимое таблицы.
Ответ №1:
IMO способ, которым вы обновляете, не является хорошей идеей.Либо вы должны связать каждую строку с отдельной страницей редактирования, либо использовать ajax.Доступно множество плагинов для обновления значений таблицы с помощью ajax, если вам нужно, я могу предоставить вам ссылки на ваш способ сделать это, я предполагаю, что вы делаете это следующим образом
<s:form action="UpdateDataActionName">
<s:iterator value="tableList">
<s:textfield name="objectName.propertyName1" value="%(propertyName1)">
<s:textfield name="objectName.propertyName2" value="%(propertyName2)">
<s:textfield name="objectName.propertyName3" value="%(propertyName3)">
</s:iterator>
<s:submit value="Update"/>
</s:form>
Теперь объявите список на вашем UpdateDataAction
языке типа <objectNameoftableListType>
, то есть того же типа объекта, который представляет tabeList.Имя списка должно быть objectName
.Попробуйте Iteate и проверьте, получаете ли вы правильные значения, отправленные из jsp.