Как использовать массив объектов, возвращенный из класса BeanClass и отображаемый в раскрывающемся списке в JSP?

#jsp #jsf #dropdown #javabeans

Вопрос:

У меня есть два массива, возвращенных из BeanClass (eventBean): SelectItem[] abc; Объект[] xyz;

Когда я использую массив SelectItem, я получаю список значений в поле с несколькими выборками (ожидаемый)

 <h:selectManyListbox size="5" styleClass="selectListBox">    
      <f:selectItems value='#{eventBean.abc}' />
  </h:selectManyListbox>
 

Но, когда я использую массив объектов, я получаю внутреннюю ошибку сервера 500 в своем JSP (Ошибка)

 <h:selectManyListbox size="5" styleClass="selectListBox">
         <f:selectItems value='#{eventBean.xyz}' />
 

</h:selectManyListbox>

Как мы можем использовать данные массива объектов с тегом значения SelectItems?

Ответ №1:

Если элементы-члены вашего компонента выбора не являются экземплярами SelectItem , дополнительные var атрибуты и атрибуты элемента должны использоваться для правильной идентификации значения, метки и т. Д. объекта «Выбранный элемент».

 <h:selectManyListbox size="5" styleClass="selectListBox">
    <f:selectItems value="#{eventBean.xyz}" var="obj" itemLabel="#{obj.name}" itemValue="#{obj}" />
</h:selectManyListbox>
 

Просто name замените свойством отображения пользовательского объекта или используйте его toString() реализацию.