jsf - com.sun.faces.config.ConfigureListener 的配置

标签 jsf jsf-2 mojarra

我正在审查当前的 JSF 项目,其中 web.xml配置包含:

  • FacesServlet(在 *.xhtml 上配置)
  • com.sun.faces.config.ConfigureListener

  • 我正在使用 JSF 2.2 和 Mojarra 实现。

    我对 ConfigureListener 感到困惑.配置中需要这个类吗?这门课的目标是什么?我找不到任何信息,而且该类(class)几乎没有 javadoc。

    如果我删除此配置,一切似乎都以相同的方式工作。因此我猜 ConfigureListener可以或应该删除,但我不确定。

    最佳答案

    ConfigureListener通常通过 /META-INF/jsf_core.tld 自动注册Mojarra 实现 JAR 文件的文件。此外,ConfigureListener通过 Servlet 3.0 ServletContainerInitializer 显式注册为了解决旧的 GlassFish v3 错误(注意:v3,而不是 3.0.x,因此是有史以来第一个 GF3 版本)。

    存在通过.tld自动注册的情况文件不足。众所周知的是当webapp部署到Jetty时.此问答中对此进行了详细说明:could not find Factory: javax.faces.context.FacesContextFactory .

    此外,正如之前和那个详细答案中提到的,GlassFish v3 有一个错误,其中 TLD 文件被扫描得太晚,因此 JSF 无法在正确的时间执行其必要的初始化操作。然后您需要明确注册 ConfigureListener在 webapp 的 web.xml .

    但是,如果它没有在 web.xml 中明确注册时对您有用,然后保持它。 web.xml 中的噪音更少更好。但是,如果您碰巧可能部署到对上述问题敏感的容器(因此,当您的 webapp 实际上是一个公开分发的应用程序并且您无法控制目标容器的选择时),那么您最好将其保留在“对于这种情况”那”。

    更新 :当在 web.xml 中启用此条目时,Tomcat 8.x 似乎显示错误行为:这个监听器实际上会被执行两次而不是一次。结果是灾难性的:除其他外,所有 JSF 事件监听器都将被注册两次,组件库将被加载两次。这只会在运行时导致冲突。换句话说,在部署到 Tomcat 时,请确保从 web.xml 中删除此条目。 .

    关于jsf - com.sun.faces.config.ConfigureListener 的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264083/

    相关文章:

    java - 在 Alfresco Explorer 中将结果导出到 Excel

    java - JSF/Spring Security - 添加额外的登录字段不会调用自定义过滤器

    java - jsf 的依赖项(如 servlet)阻止应用程序启动

    java - JSF2 - 由 EJB 或 ManagedBean 支持?

    jsf - p :ajax is crashing composite component

    jsf - a4j :htmlCommandLink in RichFaces 4

    java - p :dashboard model dynamically update 出现问题

    ajax - JSF 2 部分请求不使用工厂中的 FacesContext

    java - Mojarra 中的高 session 内存使用率

    jsf - Primefaces excel 导出不起作用 - 不显示打开/保存对话框