Jsf preRenderView的侦听器方法后渲染头部&;主体内的预渲染组件已执行
我需要为页面设置一个动态页面标题,该页面是在执行了preRenderView&preRenderComponent在文档体中的侦听器之后检索的。但我发现标题是在执行这些侦听器之前呈现的Jsf preRenderView的侦听器方法后渲染头部&;主体内的预渲染组件已执行,jsf,jsf-2,Jsf,Jsf 2,我需要为页面设置一个动态页面标题,该页面是在执行了preRenderView&preRenderComponent在文档体中的侦听器之后检索的。但我发现标题是在执行这些侦听器之前呈现的 有什么方法可以延迟标题标签的呈现,直到监听器执行了吗?好的,我尝试了以下策略作为解决方法。我只需将f:event type=“preRenderComponent.”从主体内部移动到头部部分,即可获得所需的行为 <f:metadata> <f:viewParam name="id" va
有什么方法可以延迟标题标签的呈现,直到监听器执行了吗?好的,我尝试了以下策略作为解决方法。我只需将
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
之后使用的钩子即可,placejsf.ajax.addOnEvent(函数(数据){if(data.status==“success”){alert('hello');})
并查看它是否在侦听器之后被调用……这是在同步或异步请求上执行的吗?PreRenderView应该可以正常工作,PreRenderComponent只有在连接到UIViewRoot
@balusC:inside
中的文档
需要在初始页面请求时设置,但必须在侦听器executed@Daniel:这不是通过ajax更新的,但只需在初始页面请求时执行。@user01,使用RequestContext
怎么样<代码>上下文。执行(someJsCode)
从托管bean更新标题?