UI:include 包含预呈现事件 JSF 之前的页面



我有一个测试.xhtml页面,我在其中定义了一个事件

<f:metadata>
    <f:event type="preRenderView" listener="bean.setUrl()"/>
</f:metadata>

页面中还有一个插入标签。

<ui:insert name="melcontent">
      <ui:include id="contentscreen" src="bean.url"/>
</ui:insert>

现在的问题是我想在预渲染事件中动态设置这个包含 src 页面 src="/page/somepage.xhtml",在支持 bean 中的某个位置,并希望从该支持 bean 加载包含标签,但在预呈现调用侦听器之前,包含甚至在预渲染之前就已经执行了。 任何人都可以提出实现这一目标的方法吗? 提前谢谢。

标记 ui:include 是一个标记处理程序,这意味着它在视图构建时而不是视图渲染时运行。因此,preRenderView稍后发生。

构建时间标记 - 它们用于更改组件树的构建。它们在渲染期间不会进行任何更改。

渲染时间 - 当视图呈现以生成 HTML 时。它发生在以后。

如果你确实需要使用 ui:include 来做到这一点,你可以添加一个由 ui:fragment 包装的包含列表,其中包含一个渲染属性,因为 ui:fragment 渲染属性将在渲染时进行评估。喜欢:

<h:panelGroup id="panel">
    <ui:fragment rendered="#{bean.conditionFirstFile}">
        <ui:include src="first.xhtml"/>
    </ui:fragment>    
    <ui:fragment rendered="#{bean.conditionSecond}>
        <ui:include src="second.xhtml"/>
    </ui:fragment>
    ...
</h:panelGroup>

相关内容

  • 没有找到相关文章

最新更新