#struts2
#struts2
Вопрос:
У меня есть класс в стеке значений, который содержит список объектов, каждый объект — это еще один список объектов, и, наконец, есть объект, к которому я хочу получить доступ. Например:
Список фруктовых групп—> Фруктовая группа—> Фрукты
Допустим, FruitGroupsList содержит 2 списка FruitGroup:
- Съедобные фрукты
- Несъедобные фрукты
EdibleFruits — это фруктовая группа (список), которая содержит множество фруктовых объектов:
- Apple
- Pear
- Слив …
У каждого фрукта есть свойство Name.
Я понимаю, что я могу выполнить итерацию по списку FruitGroupsList следующим образом:
<s:iterator value="FruitGroupsList" var="fgl">
<s:property value="%{#fgl.name}" />
</s:iterator>
Как мне выполнить цикл по каждой группе фруктов и получить свойство (например, FruitName)? Я пробовал различные типы встраивания других тегов итератора, но, похоже, пока не могу решить эту проблему…
Спасибо!
Ответ №1:
Я предполагаю, что вы добавили только один тип в каждый список, в противном случае вам действительно следует использовать map.
Таким образом, ваш veiw имеет доступ к вашим действиям:
List<List<Fruit>> fruitGroupsList;
В этом случае вы бы сказали:
<s:iterator value="fruitGroupsList">
<s:iterator>
<s:property value="whatEverPropertyAFruitHas"/> <!-- If this was a simple type such as String, you could just write <s:property/>
</s:iterator>
</s:iterator>
Список списков требует двух итераторов. Если ситуация становится более запутанной, то разумным может быть включение средства получения в действие для извлечения некоторых глубоко вложенных элементов.
Комментарии:
1. Приведенный выше код был протестирован на работоспособность. Предыдущий код работал, но был немного сложнее (использовался атрибут var, который был не нужен), если вы все еще не можете заставить его работать, покажите свое действие, чтобы решение могло быть точным.
Ответ №2:
Я исправил сам. возникла проблема в установщике и получателе класса action