Связывание бина JSF с включенным JSF - PullRequest
1 голос
/ 08 февраля 2012

Я в конце моей веревки с этим.Я новичок в JSF, так что это, вероятно, мое неправильное понимание многих вещей.

<ui:composition>
    <f:view>
         <tr:form>
             <ui:fragment rendered="#{param['type'] eq 'myType'}">
                <ui:include src="/home/myPage.jspx" />
            </ui:fragment>
        ......

Я передаю страницу определенного типа, она отображает определенные поля / критерии для формы, и бин поддерживает все этопотому что есть один поиск.

В myPage.jspx у меня есть:

action="#{MyBean.submitForm}"

не работает, хотя onsubmit = "alert ('hi');"работает как атрибут элемента формы.

Полагаю, что наиболее запутанным является то, что

valueChangeListener="#{MyBean.stateChanged}"

работает с полем в myPage.jspx

Почемудействие (атрибут кнопки) не работает?

1 Ответ

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

Во время обработки отправки формы, если кнопка или один из ее родительских компонентов не rendered, действие кнопки не будет вызвано. Вам нужно убедиться, что атрибут rendered оценивает то же самое во время обработки отправки формы, как и при отображении формы. В вашем случае вы зависите от значения параметра запроса с именем type.

В этом конкретном случае вы можете решить проблему, сохранив параметр запроса type с помощью <f:param>, вложенного в командную кнопку:

<h:commandButton ...>
    <f:param name="type" value="#{param.type}" />
</h:commandButton>

Или, если вы используете JSF 2.0, размещение компонента в области просмотра и установка параметра type в управляемом компоненте с помощью <f:viewParam> также может решить эту проблему.

<f:metadata>
    <f:viewParam name="type" value="#{bean.type}" />
</f:metadata>

...

<ui:fragment rendered="#{bean.type eq 'myType'}">

Смотри также:

...