f: выберите элементы и POJO - еще раз - PullRequest
1 голос
/ 14 сентября 2011

Все вопросы, задаваемые: как я могу связать POJO с h: selectXX с помощью f: selectItems, заканчивая ответом «использовать конвертер».Тем не менее, кажется, что можно обойтись без конвертера - см .:

Facelet:

<h:selectManyListbox value="#{pojoBean.selected}">
    <f:selectItems value="#{pojoBean.allItems}" var="i" itemValue="#{i}" itemLabel="#{i.txt}" />
</h:selectManyListbox>

Боб:

public class PojoBean {
    List<MyItem> selected;
    List<MyItem> allItems;

POJO:

public class MyItem {
    private String txt;
...}

Обратите внимание, что, похоже, это работает только с h: selectManyListbox, когда выбранные значения попадают в список, а не в одно свойство.

Вопрос - почему он не работает сh: выберите одно меню и т. д.

1 Ответ

0 голосов
/ 14 сентября 2011

Вероятно, ваш класс MyItem уже имеет переопределенное значение toString(), которое возвращает значение txt, и вы печатали selected обычным образом, чтобы определить выбранные значения:

System.out.println(selected);

Попробуйте выполнить приведениекаждый элемент из selected возвращается к MyItem:

for (MyItem myItem : selected) {
    System.out.println(myItem);
}

. Вы увидите, что он выходит из строя с ClassCastException, потому что это на самом деле a String.Так что да, вам все еще нужен конвертер.

См. Также:

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