Jsf com.sun.faces.config.ConfigureListener的配置
我正在回顾一个当前的JSF项目,Jsf com.sun.faces.config.ConfigureListener的配置,jsf,jsf-2,mojarra,Jsf,Jsf 2,Mojarra,我正在回顾一个当前的JSF项目,web.xml配置包含: FacesServlet(在*.xhtml上配置) com.sun.faces.config.ConfigureListener 我正在使用JSF2.2和Mojarra实现 我对ConfigureListener感到困惑。配置中是否需要此类?这门课的目标是什么?我找不到任何信息,该类几乎没有javadoc 如果我删除这个配置,一切看起来都是一样的。因此,我猜想ConfigureListener可以或应该被删除,但我不确定 Config
web.xml
配置包含:
- FacesServlet(在
上配置)*.xhtml
com.sun.faces.config.ConfigureListener
ConfigureListener
感到困惑。配置中是否需要此类?这门课的目标是什么?我找不到任何信息,该类几乎没有javadoc
如果我删除这个配置,一切看起来都是一样的。因此,我猜想
ConfigureListener
可以或应该被删除,但我不确定 ConfigureListener通常通过Mojarra实现JAR文件的/META-INF/jsf_core.tld
文件自动注册。此外,ConfigureListener
通过Servlet 3.0ServletContainerInitializer
显式注册,以解决一个旧的GlassFish v3错误(注意:v3,而不是3.0.x,因此这是有史以来的第一个GF3版本)
存在通过.tld
文件自动注册不足的情况。众所周知,当webapp部署到时。本问答中对此进行了详细解释:
另外,正如前面提到的,在详细的回答中,GlassFish v3有一个bug,其中TLD文件扫描得太晚,因此JSF无法在适当的时候进行必要的初始化。然后需要在webapp的web.xml
中显式注册ConfigureListener
但是,如果它在web.xml
中没有明确注册时对您有效,那么就不要使用它。web.xml
中的噪音越小越好。但是,如果您碰巧部署到了对上述问题敏感的容器中(因此,当您的webapp实际上是一个公开发布的应用程序,并且您无法控制目标容器的选择),那么您最好将其保留在“针对这种情况”中
更新:当在
web.xml
中启用此项时,Tomcat 8.x似乎显示出错误行为:此侦听器实际上将执行两次而不是一次。结果是灾难性的:除其他外,所有JSF事件监听器将注册两次,组件库将加载两次。这只会在运行时导致冲突。换句话说,在部署到Tomcat时,请确保此条目已从web.xml
中删除。查找此条目谢谢您的回答。我意识到,FacesServlet
实际上是在/*.xhtml
上配置的。我更新了问题,不客气。我会仔细检查一下。这就是非法语法。我用正确的一个更新了Q。你(再次)是对的。对不起,我查得太快了。我有*.xhtml
。对于ICEFaces 3.3.0和tomcat>=7.0.42,在web.xml中声明此侦听器会导致在每个页面上添加两次具有相同id的特定ICEFaces组件,从而导致错误。请参阅本论坛帖子:我可以确认同样的错误行为,即配置侦听器被创建两次,也发生在WebLogic 12.2.1.3上。从web.xml中删除侦听器可以解决此问题。