Почему ошибки тега select в Struts 2?

Ну я с этим заблокирован, у меня есть JSP с 2-мя формами, одна из них - искать питомцев по id заказчика, а другая - регистрировать услугу для одного из этих питомцев, так что проблема это то, что когда я ищу домашних животных со следующей формой, которая связана с PetsAction:

<s:form action="searchPets">
<div class="col-xs-3">
    <input type="text" name="customer.id" class="form-ontrol">              
</div>
    <s:submit/>
</s:form>  

У меня проблема с тегом select, который загружается в первый раз данными из метода prepare() метода ServiceAction, когда данные из формы searchPets поступают в JSP.

<s:select list="employees"
name="GrooService.employee.IdEmp"
listKey="IdEmp"
listValue="nameEmp"
cssClass="form-control"
id="GrooList"
/>

Это ошибка, которую я получаю

tag 'select', field 'list', name 'GrooService.employee.IdEmp': 
The requested list key 'employees' could not be resolved as a 
collection/array/map/enumeration/iterator type. 
Example: people or people.{name} - [unknown location]

Итак, что мне изменить? Правильно ли, если я загружу данные тега select также из PetsAction? Должен ли я иметь только одно действие для обеих форм?


person gyosida    schedule 28.06.2014    source источник


Ответы (1)


Поскольку оба действия возвращают один и тот же результат JSP, который содержит тег select, а разные классы действий содержат метод действия, вы должны написать prepare() в обоих классах.

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

Исключение выдается, поскольку атрибут list тега <s:select> не может т быть null. Вы должны правильно инициализировать переменную, используемую для тега, прежде чем возвращать результат, содержащий ссылки на эту переменную.

person Roman C    schedule 28.06.2014
comment
Как вы думаете, правильно ли использовать один класс Action для обоих? Была ли у вас когда-нибудь такая ситуация раньше? - person gyosida; 29.06.2014
comment
Теоретически вы можете написать все приложение в одном классе действий, но по моему опыту предпочтительнее разделить его на разные классы. Вам решать, как вы их организуете. Все, что вам следует знать, это то, что JSP являются dispatcher результатом действия, и действие отвечает за инициализацию/заполнение объектов, используемых для рендеринга этого JSP. - person Roman C; 29.06.2014
comment
@Gianfranco Если это сработало для вас, и этот ответ помог вам в этом, вы должны отметить его как принятый. См. Как это работает. - person Roman C; 30.06.2014