【问题标题】:Unable to locate the EL RI expression factory找不到 EL RI 表达式工厂
【发布时间】:2011-06-18 11:50:32
【问题描述】:

我的应用程序出现以下异常。

com.sun.faces.config.ConfigurationException: 看来JSP版本的 容器早于 2.1 并且无法 定位 EL RI 表达式 工厂, com.sun.el.E​​xpressionFactoryImpl。如果 不使用 JSP 或 EL RI,请确保 上下文初始化参数, com.sun.faces.expressionFactory,是 正确设置。

如何在web.xml中设置EL详情。

【问题讨论】:

    标签: jsp jsf el


    【解决方案1】:

    例外是需要 JSP 2.1。您需要确保您的 web.xml 被声明为 Servlet 2.5 或更新版本,并且您的 servletcontainer 支持它(Tomcat 6、Glassfish 2、JBoss AS 5 等或更新版本)。 JSP 2.1 与 Servlet 2.5 齐头并进。一个正确的 Servlet 2.5 声明 web.xml 开始如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5">
    
        <!-- Config here. -->
    
    </web-app>
    

    如果您使用的是旧版本的 servletcontainer,您实际上无法升级到至少与 Servlet 2.5 兼容的容器,那么您需要先让我们知道它是哪一个,以便我们可以发布更合适的答案/解决方法。

    【讨论】:

    • 更新web.xml后,同样报错。
    • 但是,我没有添加属性version="2.5"。有必要吗?我只是从另一个来源复制粘贴。哪个没有那个属性。
    • 要么环境根本不支持 Servlet 2.5,要么类路径被旧版本库污染。首先,您使用的是什么环境(servletcontainer/server)?雄猫 6.0?雄猫 5.5?玻璃鱼v2?玻璃鱼 v3?等等。
    • 那么唯一合理的理由就是你的类路径搞砸了。您应该切勿触摸JRE/libJRE/lib/ext 文件夹。您应该从不Tomcat/libWebapp/WEB-INF/lib 中添加/删除特定于servletcontainer 的库。如果有,你需要清理它。
    • 这是一个特定于 servletcontainer 的库。您应该不需要更新它。它应该已经包含在Tomcat/lib 中并且在那里保持不变。如果Webapp/WEB-INF/lib 中有任何内容,则需要将其删除。查看全新 Tomcat 安装的 Tomcat/lib,并将其内容与 Webapp/WEB-INF/lib 进行比较。如果 webapp 中有任何类似名称的库,例如 jsp-apiservlet-api 等,您需要将它们全部从 Webapp/WEB-INF/lib删除。它们应该由 servletcontainer 本身提供,而不是由您的 web 应用程序提供。
    【解决方案2】:

    这是因为最新的 el jar 不在类路径中。 它也对我有用

    (参考)请参考链接 JSF 2.0 + Tomcat : It appears the JSP version of the container is older than 2.1…

    【讨论】:

    • 我先尝试了 BalusC tip,但错误仍然不断出现。添加最新的el jar后,错误消失了。
    【解决方案3】:

    将以下内容添加到 Web.xml,它对我有用。

    <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
    </context-param>
    

    【讨论】:

      【解决方案4】:

      您可以尝试删除 Web.xml 中的以下内容,它对我有用。

      <context-param>
          <param-name>com.sun.faces.expressionFactory</param-name>
          <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
      </context-param>
      

      【讨论】:

        猜你喜欢
        • 2014-02-17
        • 1970-01-01
        • 2011-09-05
        • 2012-12-06
        • 2022-11-18
        • 2016-07-24
        • 1970-01-01
        • 2011-12-14
        • 1970-01-01
        相关资源
        最近更新 更多