JSF:如果RequestScoped支持的值为true,则呈现ViewScoped支持的表单

时间:2018-10-10 06:41:51

标签: primefaces jsf-2.3 java-ee-8

我有一个简单的页面,显示在@RequestScoped bean中支持的信息,并且我想在单击commandLink时显示一个表单。 到目前为止,这是可行的,我在@RequestScoped bean中使用了一个变量来动态呈现表单的父组件。 问题在于该表单使用了primefaces和commandLink组件中的自动完成组件,这些组件使用ajax更新了表单ui,并且它们将无法工作。如果我将@RequestScoped bean更改为@ViewScoped,它将起作用。

有没有办法在保持bean @RequestScoped的同时做到这一点?

谢谢您的帮助!

示例:

    ...
    <p:commandLink actionListener="requestScopedBean.someMethod" update="contentPanel">
        <f:setPropertyActionListener value="#{true}" target="#{requestScopedBean.booleanVariable}" />
    </p:commandLink>

    <p:outputPanel id="contentPanel">
        <ui:fragment rendered="#{requestScopedBean.booleanVariable}">
            <h:form>
                <p:autoComplete value="#{viewScopedBean.someValue}" completeMethod="#{viewScopedBean.complete}" />

                <p:commandLink actionListener="#{viewScopedBean.addSomething}" update="somethingListPanel" />

                <p:outputPanel id="somethingListPanel">
                    <p:repeat value="#{viewScopedBean.somethingList}" var="som">
                        <h:outputText value="#{som.property}" />
                    </p:repeat>
                </p:outputPanel>
            </h:form>
        </ui:fragment>
    </p:outputPanel>
    ...

0 个答案:

没有答案