2012-02-18 3 views
0

У меня есть selectOneMenu, который управляет отношением между двумя объектами A и B. Где A фиксировано, а B можно выбрать через меню.
On form submit B отправляется в bean для дальнейшей обработки (создания и сохранения объекта отношения AToB).jsf send selectOneMenu значение как прямой запрос управляемого bean

Нерабочий случай!

<h:selectOneMenu value=#{b}> 
    <!-- b items from bean --> 
</h:selectOneMenu> 
<h:commandButton action="#{bean.addBToSelA(b)}"/> 

<managed-bean> 
    <description>B Entity Request Bean</description> 
    <managed-bean-name>b</managed-bean-name> 
    <managed-bean-class>B</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

Работа дело!

Но если значение selectOneMenu является вложенным свойством другого управляемого компонента, он работает. (Как, например, AToB)

<h:selectOneMenu value=#{aToB.b}> 
    <!-- b items from bean --> 
</h:selectOneMenu> 
<h:commandButton action="#{bean.addBToSelA(aToB.b)}"/> 

<managed-bean> 
    <description>AToB Entity Request Bean</description> 
    <managed-bean-name>aToB</managed-bean-name> 
    <managed-bean-class>AToB</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

Примечание: Достаточно, если мой «б» это просто свойство другого запроса управляемый компонент.

Может ли кто-нибудь быть таким добрым и объяснить почему?

ответ

1

Поскольку JSF уже создал экземпляр компонента заранее. Это значение не будет переопределено значением модели, если экземпляр уже существует в области. Удалите <managed-bean> от faces-config.xml, и все будет хорошо.


Unrelated к конкретной проблеме, вы, кажется, уже с использованием JSF 2.x. Зачем придерживаться старой конфигурации JSF 1.x faces-config.xml? Просто используйте аннотацию @ManagedBean (конечно же, на реальных базовых классах бобов).

+0

Спасибо за ваш ответ, проверите это позже. Эти объекты с областью запроса - это всего лишь Pojo's из Hibernate без каких-либо аннотаций. Они извлекаются из EAR и распределяются между его клиентами (в будущем). Мои мысли состояли в том, что таким образом я могу сохранить его независимым и разным для каждого клиента, если это необходимо. Если аннотации являются специфичными для приложения/проекта и, безусловно, не будут использоваться повторно, я не против вставлять их в исходный код. Но все же у каждого есть про и минусы. – djmj

+0

Я не могу удалить его, потому что у меня есть другая форма, где я могу добавить новые объекты B с введенными пользователем свойствами. Поэтому мне просто нужно переименовать его. – djmj

Смежные вопросы