在preRenderView&的监听器方法之后渲染头部。内部的preRenderComponent已执行

时间:2012-11-18 07:48:03

标签: jsf jsf-2

我需要为preRenderView&之后检索的页面设置动态页面标题。 preRenderComponent在文档正文中的侦听器已被执行。但我发现在执行这些侦听器之前会呈现标题。

在听众执行之前,有什么方法可以延迟标题标记的呈现吗?

1 个答案:

答案 0 :(得分:1)

好的,我尝试将策略作为解决方法。我只是将f:event type="preRenderComponent"..body移到head部分&我得到了理想的行为。

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

<ui:define name="titleOfPage">
    <f:event type="preRenderComponent" listener="#{bean.method()}"/>
    #{bean.title}
</ui:define>

<ui:define name="bodyOfPage">
    ..
    ..
</ui:define>

主模板:

<h:head>
    ... 
    <title><ui:insert name="titleOfPage"></ui:insert></title>
</h:head>
<h:body >
     <ui:insert name="bodyOfPage">Body of the pages goes here</ui:insert>
</h:body >

调用第一个侦听器方法&amp;然后呈现title内的head

也许可以直接使用PreRenderView类型而无需将f:event标记移到头部,但即使在不希望的ajax请求上也会触发PreRenderView