Могу ли я добавить объект, представленный selectOneMenu, в коллекцию bean-компонента в JSF? - PullRequest
3 голосов
/ 21 февраля 2012

Итак, у меня есть элемент с именем bean, в котором есть список категорий, и я хочу добавить его в раскрывающийся список.

В нижней части страницы есть отправка, в которой сохраняется мой элемент, и все работает нормально, у меня есть конвертер для выпадающего меню, который также работает, но я не могу понять, как получить объект введите Category из моего выпадающего списка и добавьте его в список категорий в моем bean-компоненте.

Вот раздел моего JSF, из которого я пытаюсь добиться этого:

<table>
<tr>
    <th class="textRight">Choose Category</th>
    <td>
        <h:selectOneMenu id="currentCategory">
            <f:selectItems value="#{serviceWeb.listCategories()}" />
        </h:selectOneMenu>
    </td>
    <td>
        <h:commandButton id="addCategory" value="Add" 
                         action="element.categories.add(#{currentCategory.value})"  />
    </td>
</tr>
</table>

Я знаю, что это не работает, я получаю сообщение об ошибке:

action="element.categories.add(#{currentCategory.value})" Not a Valid Method Expression

, чтобы объяснить, для этого пункта меню нет вспомогательного компонента, я пытаюсь получить значение от самого компонента.

Итак, я думаю, вы не можете сделать это таким образом, но как вы это делаете?

Возможно ли это?

1 Ответ

2 голосов
/ 21 февраля 2012

Привязать компонент к представлению (которое в случае <h:selectOneMenu> разрешается к экземпляру HtmlSelectOneMenu) и использовать UIInput#getValue() в качестве аргумента метода действия и исправьте неверный синтаксис EL.

<h:selectOneMenu binding="#{currentCategory}">
    <f:selectItems value="#{serviceWeb.listCategories()}" />
</h:selectOneMenu>
<h:commandButton value="Add" action="#{element.categories.add(currentCategory.value)}" />
...