我有一个通过漂亮的请求呈现的 xhtml 视图。我遇到了一个问题,即来自漂亮面孔的动作映射被执行了两次,但只有当我有一个 ui:include 标记时。示例漂亮的配置是这样的:
<url-mapping id="testRedirector">
<pattern value="/project/#{lookupBean.projectId}/#{lookupBean.cardNumber}" />
<view-id value="/lookup.xhtml" />
<action>#{myController.init}</action>
</url-mapping>
.xhtml 是这样的:
...
<ui:include src="/header.xhtml">
<ui:param name="this_tab_class" value="current"/>
</ui:include>
<h:panelGrid columns="4">
...
根据对 URL 的请求,我看到对 myController.init() 的日志调用被执行了两次。如果我注释掉 ui:include,init 只会正确调用一次。我已经在漂亮的 url-mapping 元素上尝试了其他 jsf 阶段侦听器,但是所有其他枚举类型导致 init() 永远不会被调用。
我的问题是,如何实现将预定义 header.xhtml 或其他预定义组件包含到页面中而不调用 RENDER_REDRAW 阶段两次的相同目标?或者这是一个漂亮面孔的具体问题?