Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 net.sf.jsfcomp.ext.onload.OnLoadPhaseListener不在JSF 2中工作_Jsf 2_Myfaces - Fatal编程技术网

Jsf 2 net.sf.jsfcomp.ext.onload.OnLoadPhaseListener不在JSF 2中工作

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>

我们正在从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>

加载配置
/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解决方案解决某些问题,则应优先考虑使用第三方解决方案。让我知道,如果这对你有效,那么我将把评论总结成一个真实的答案。