JSF / CDI:更新页面内容的一般方法

时间:2014-02-28 09:38:58

标签: jsf jsf-2

请求具有给定参数的新页面时的一般方法是什么,即调用CDI bean操作并将结果绑定到页面组件?

我正在使用这种'模式',但这是正确的方法吗?

    <ui:define name="content">
        <h:form id="dataForm">

            #{userForm.init(param.id, param.mode)}

            <!--  User edit Dialog -->
            <p:panel>
            ...
             </:panel>
         </h:form>
    </ui:define>

问题在于,当使用'rendered'属性时,这取决于bean(非阻塞)进程结果,但页面可能会更快地呈现。因此,我应该能够在处理后调用页面UI组件上的更新过程。

1 个答案:

答案 0 :(得分:1)

如果您使用的是JSF 2.2,那么可以选择:

<f:metadata>
    <f:viewAction action="#{backingBean.action}"/>
</f:metadata>

如果你是&lt; JSF2.2,但你碰巧使用Seam你可以使用这样的东西作为预渲染视图事件,它不必在模板中,你可以把它放在你的ui:composition

<强> XHTML

xmlns:s="http://jboss.org/seam/faces"

<f:metadata>
    <s:viewAction action="#{backingBean.action}" />
</f:metadata>

这里有一些东西需要阅读Seam3,如果没有,你可以随时使用经典方式:

<f:metadata>
    <f:viewParam name="id" value="#{backingBean.entryId}"/>  
    <f:event type="preRenderView" listener="#{backingBean.loadEntry}"/>  
</f:metadata>