【发布时间】:2012-03-03 07:11:56
【问题描述】:
我有一个通过漂亮面孔请求呈现的 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 阶段两次的相同目标?或者这是一个漂亮面孔的特定问题?
【问题讨论】:
-
我是 PrettyFaces 的开发人员之一。我认为这可能是 PrettyFaces 中的错误,也可能是您正在使用的 JSF 实现中的错误。您应该将此问题发布到 PrettyFaces 论坛。我们可以在那里详细讨论这个问题。 ocpsoft.com/support/forum/prettyfaces-users
-
您的
init方法是否使用@PostConstruct注释?
标签: jsf-2 prettyfaces