struts2: добавление объектов VO в список в списке повторяющихся классов действий в jsp-получении списка объектов в другом классе действий - PullRequest
1 голос
/ 23 октября 2009

В моем приложении Struts 2 я повторяю список объектов VO в моем jsp следующим образом -

<s:iterator value="listOfVoObjects">
<tr>
<td><s:property value="itemId" /></td>
<td><s:property value="itemName" /></td>
</tr>
</s:iterator>

Теперь я хочу получить этот «listOfVoObjects» в своем классе действий, когда пользователь нажмет какую-нибудь кнопку, скажем «заморозить», и для этого я определил его как скрытый на той же странице jsp, как -

<s:hidden name = “listOfVoObjects”/> 

и получить его в классе действия как объект списка, используя setter-getter. Это работает, но дает список, добавив двойную квадратную скобку, как -

[[originator.vo.BeforeSavingReq4OriginatorVO@15fc793, originator.vo.BeforeSavingReq4OriginatorVO@127bd04, originator.vo.BeforeSavingReq4OriginatorVO@83969e]]

Вот почему у меня возникла проблема с его повторением с использованием метода iterate () в моем классе действий.

Пожалуйста, помогите удалить эту двойную квадратную скобку. Желаемый вывод -

[originator.vo.BeforeSavingReq4OriginatorVO@15fc793, originator.vo.BeforeSavingReq4OriginatorVO@127bd04, originator.vo.BeforeSavingReq4OriginatorVO@83969e]

или, если возможно, сообщите мне другое решение.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

Здесь - рабочий пример (проект Netbeans 6.9), иллюстрирующий, как выполнять итерации по массиву или списку объектов.

Кроме того, как отправить форму так, чтобы список объектов был заново создан при отправке.

Просто разрешите ссылки и приступайте.

0 голосов
/ 24 октября 2009

Ваш список становится String"[originator.vo.BeforeSavingReq4OriginatorVO@15fc793, originator.vo.BeforeSavingReq4OriginatorVO@127bd04, originator.vo.BeforeSavingReq4OriginatorVO@3990) , но это не совсем проблема.

Проблема связана с преобразованием типов. Похоже, что список нельзя редактировать на странице просмотра, но, возможно, вы не сможете воссоздать его, когда на GET / POST вы работаете и нуждаетесь в том, чтобы его пропустили через страницу. Оооо .... в первую очередь вам нужен конвертер для создания объектов BeforeSavingReq4OriginatorVO в и из Strings.

Если эти вещи нигде не хранятся, вам нужно будет создать строку, которую вы сможете позже проанализировать. Большую часть времени это некоторая постоянная сущность, и вы можете вывести идентификатор в виде представления String, а затем сказать Struts, чтобы использовать идентификатор для загрузки его из базы данных, когда ему нужно представление objet. Чтобы узнать, как это сделать, см. Преобразование типов в Struts.

Итак, вы получите конвертер типов, работающий на ваш класс. Сейчас коллекция. Я не уверен, что это сработает, если у вас будет только одно поле с именем коллекции, а затем попытаться восстановить его из вывода toString коллекции. Может быть, когда есть преобразователь типов, и ваша строка выглядит как [1,4,5,6], она видит, что сеттер является коллекцией, а затем пытается создать объекты VO из каждого «представления строки».

Если нет, то я знаю, что вы можете перебирать свою коллекцию и создавать скрытые поля для каждого значения.

<s:iterator value="listOfValues" status="row">
    <s:hidden name="listOfVoObjects[${row.index}]" value="<s:property/>"
</s:iterator>

Теперь вы, Struts, будете знать, как создать свою коллекцию, если есть конвертер типов. Если преобразователь типов отсутствует, вам необходимо создать всю структуру объекта в форме HTML:

<s:iterator value="listOfValues" status="row">
    <s:hidden name="listOfVoObjects[${row.index}].itemId" value="<s:property value="itemId"/>"
    <s:hidden name="listOfVoObjects[${row.index}].itemName" value="<s:property value="itemName"/>"
enter code here
</s:iterator>

В зависимости от вашей версии Java все еще существуют некоторые последствия преобразования типов. Если вы можете использовать Generics, и ваш установщик цели - List setListOfVoObjects (...), то Struts может выяснить, какой компонент должен быть создан для каждой записи. Если нет, то есть настройки преобразования типов для Коллекций и карт, описанные в документации Struts.

В файле с именем [actionName] -conversion.properties вы указываете тип bean-компонента следующим образом:

Element_listOfVoObjects=originator.vo.BeforeSavingReq4OriginatorVO

но проверьте документацию по стойкам.

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