Как обновить содержимое списка, отображаемого в JSP, используя Struts2?

#java #jsp #struts2

#java #jsp #struts2

Вопрос:

Я использую Struts2 для отображения содержимого списка объектов в JSP. Поток событий выглядит следующим образом:

  1. GetDataAction.java -> извлекает значения из базы данных, заполняет ArrayList с именем tableList . При успешном выполнении отображается displayData.jsp .
  2. displayData.jsp -> использует s:iterate тег для отображения значений объектов в tableList .
  3. Пользователь изменяет некоторые значения в 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.