Jsf preRenderView的侦听器方法后渲染头部&;主体内的预渲染组件已执行

Jsf preRenderView的侦听器方法后渲染头部&;主体内的预渲染组件已执行,jsf,jsf-2,Jsf,Jsf 2,我需要为页面设置一个动态页面标题,该页面是在执行了preRenderView&preRenderComponent在文档体中的侦听器之后检索的。但我发现标题是在执行这些侦听器之前呈现的 有什么方法可以延迟标题标签的呈现,直到监听器执行了吗?好的,我尝试了以下策略作为解决方法。我只需将f:event type=“preRenderComponent.”从主体内部移动到头部部分,即可获得所需的行为 <f:metadata> <f:viewParam name="id" va

我需要为页面设置一个动态页面标题,该页面是在执行了preRenderView&preRenderComponent在文档体中的侦听器之后检索的。但我发现标题是在执行这些侦听器之前呈现的


有什么方法可以延迟标题标签的呈现,直到监听器执行了吗?

好的,我尝试了以下策略作为解决方法。我只需将
f:event type=“preRenderComponent.”
主体内部移动到
头部
部分,即可获得所需的行为

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

#{bean.title}
..
..
主模板:

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

... 
正文在这里

调用第一个侦听器方法&然后呈现
标题
内部
标题


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

不要寻找延迟的方法,只要寻找一个可以在
preRenderXXX
之后使用的钩子即可,place
jsf.ajax.addOnEvent(函数(数据){if(data.status==“success”){alert('hello');})
并查看它是否在侦听器之后被调用……这是在同步或异步请求上执行的吗?PreRenderView应该可以正常工作,PreRenderComponent只有在连接到
UIViewRoot
@balusC:inside
中的文档
需要在初始页面请求时设置,但必须在侦听器executed@Daniel:这不是通过ajax更新的,但只需在初始页面请求时执行。@user01,使用
RequestContext
怎么样<代码>上下文。执行(someJsCode)
从托管bean更新标题?