JSF отправить значение selectOneMenu в качестве управляемого компонента прямого запроса - PullRequest
0 голосов
/ 18 февраля 2012

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

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

<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>

Примечание. Достаточно, если мой "b" является просто свойством другого управляемого бина запроса.

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

1 Ответ

1 голос
/ 18 февраля 2012

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


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

...