Jsf 2 net.sf.jsfcomp.ext.onload.OnLoadPhaseListener不在JSF 2中工作
我们正在从JSF1.2升级到JSF2。 我们正在使用ApacheMyFaces2.1和RichFaces4.3 我们有如下配置的onload阶段侦听器(对于JSF1.2) web.xml:Jsf 2 net.sf.jsfcomp.ext.onload.OnLoadPhaseListener不在JSF 2中工作,jsf-2,myfaces,Jsf 2,Myfaces,我们正在从JSF1.2升级到JSF2。 我们正在使用ApacheMyFaces2.1和RichFaces4.3 我们有如下配置的onload阶段侦听器(对于JSF1.2) web.xml: <context-param> <param-name>onload-config</param-name> <param-value>/WEB-INF/onload-config.xml</param-value>
<context-param>
<param-name>onload-config</param-name>
<param-value>/WEB-INF/onload-config.xml</param-value>
</context-param>
加载配置
/WEB-INF/onload-config.xml
以及在faces-config.xml中配置的相应阶段侦听器,如下所示:
<lifecycle>
<phase-listener>net.sf.jsfcomp.ext.onload.OnLoadPhaseListener</phase-listener>
<lifecycle>
net.sf.jsfcomp.ext.onload.OnLoadPhaseListener
我们正在使用与迁移到JSF2相同的配置,我知道我们不需要为上述设置添加任何额外的jar。
(jsf实现和commons日志JAR是唯一的先决条件)
但是,单击url时,将调用onload-config.xml中配置的操作方法,如下所示:
<navigation-rule>
<view-id>/from-page.xhtml</view-id>
<action>#{bean.action}</action>
</navigation-rule>
/from-page.xhtml
#{bean.action}
未调用bean.action,返回“未找到资源”错误
我是否缺少任何配置?或者我需要添加额外的LIB吗?
请帮忙
编辑1:
为该问题添加更多详细信息:
返回bean.action方法后呈现的页面如下:
<ui:composition>
<a4j:form id="sample-Form">
<ui:include src="#{bean.panel}">
</ui:include>
<h:commandButton id="button1" value="Go" action="#{bean.next}"/>
</a4j:form>
</ui:composition>
单击下一步按钮,同一页面将显示从后端返回的动态面板名称(bean.panel)为什么不使用
@PostConstruct
(自JSF 1.2开始提供)或
(自JSF 2.0开始提供)或
(自JSF 2.2开始提供)?感谢您的重复。我不能使用,因为我知道,每次渲染视图时都会调用listener方法。我希望只调用该方法一次,因为每次单击“下一步”按钮时,都会呈现相同的页面。关于@PostConstruct,据我所知,在构造bean并设置所有属性之后调用PostConstruct方法,这对我来说也是一个困难的选择,因为我无法控制相关bean的初始化。这是在代码的其他部分完成的。至于@PostConstruct
,只需使用@ViewScoped
bean。至于
,请在FacesContext#isPostback()
上添加一个复选框。另请参见和@BalusC:非常感谢您的回复。我正在尝试上述解决方案。但只是出于好奇,在JSF 2中使用上述侦听器不是一个好的做法吗?因为您似乎没有提及它?它最初是为史前JSF 1.0/1.1版本设计的,当时@PostConstruct
和视图范围不存在。如果可以使用标准API解决方案解决某些问题,则应优先考虑使用第三方解决方案。让我知道,如果这对你有效,那么我将把评论总结成一个真实的答案。