[英]Custom PhaseListener called twice in jsf 2
我正在使用JSF 2.0中的PhaseListener。 但它的方法每次都被调用两次。
@Override
public void beforePhase(PhaseEvent arg0) {
System.out.println("Start Phase "+arg0.getPhaseId()+" here the value "+ ++i +" object "+this);
}
和输出是这样的
Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@cc8c29
Start Phase RESTORE_VIEW 1 here the value 1 object com.phaseListener.MyPhaseListener@106054a
每次被两个不同的对象调用。
请让我知道,为什么会这样?
如果这有助于某人谷歌搜索此问题。
在我的情况下,我从Glassfish 3移动到Tomcat 7,我注意到我的自定义阶段监听器被注册两次导致重复的日志条目。
在我的web.xml中,我有一个ConfigureListener,它是Glassfish 3所必需的,但会在Tomcat 7上触发第二次注册:
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
我只是删除了这个块,它解决了这个问题。
这是因为你已经在JSF应用程序中两次注册了你的阶段监听器。 对此而言,“为什么”反过来又不具有建设性的责任。 如果您对同一个阶段监听器被注册两次感到困扰,只需删除第二个注册。
如果您使用Tomcat 7.0.4x,则会出现此问题。 尝试将Tomcat降级到至少7.0.39或更低。 问题很可能得到解决。 我仍然不知道原因,但它的工作原理。 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.