【问题标题】:Which settings are needed to make use of EL 3 in a JavaEE environment?在 JavaEE 环境中使用 EL 3 需要哪些设置?
【发布时间】:2016-06-08 07:54:11
【问题描述】:

我正在使用Apache TomEE 1.7.4

我的pom.xml文件中添加的依赖是-

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency> 

        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>el-api</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.0</version>
        </dependency>

使用new string concatenation operator += 就像在 -

 <h:graphicImage 
   value="#{resource[facesContext.viewRoot.locale+='/default:img/rafa.png']}"/>

我用这个替换了EL 2.2版本-

         <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>3.0.0</version>
         </dependency>

但我得到了一个 -

Caused by: javax.el.ELException: Failed to parse the expression [#{resource[facesContext.viewRoot.locale+='/default:img/rafa.png']}]
    at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:145)
    at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:171)
    at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:216)
    at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:66)
    at org.apache.webbeans.el22.WrappedExpressionFactory.createValueExpression(WrappedExpressionFactory.java:59)
    at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:408)
    ... 43 more

建议,如果有的话?

我不确定我是否必须升级到版本 8,

Apache Tomcat 8 支持 Java Servlet 3.1、JavaServer Pages 2.3、 Java 统一表达式语言 3.0 和用于 WebSocket 1.1 的 Java API 规格。


好的,它与GlassFish(4.0) Java EE Application Server 完美搭配。 但是我不明白要在 pom.xml 文件中创建哪些条目-

Here,提到需要在pom.xml中添加下面的依赖

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version><!-- 7.0 (JSF 2.2) or 6.0 (JSF 2.0/2.1) --></version>
    <scope>provided</scope>
</dependency>

添加后有-

一个截图来说明我的困惑-

在服务器日志中,我发现服务器正在使用这个版本的 Mojarra

2016-06-08T17:26:36.778+0530|信息:初始化Mojarra 2.2.0 ( 20130502-2118https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930)

使用 Glassfish 4.0 的 lib 文件夹 -

你看到有一个jar文件javaee

如果我需要使用Mojarra 2.2.6 版本,比如说我需要做什么?

【问题讨论】:

  • 您的 Maven 配置不正确。这有帮助吗? stackoverflow.com/q/8081234(和 stackoverflow.com/tags/jsf/info 中的“安装 JSF”)
  • @BalusC:JSF 信息页面建议(AS + Maven)用户将此添加到 pom.xml 文件中 - &lt;dependency&gt; &lt;groupId&gt;javax&lt;/groupId&gt; &lt;artifactId&gt;javaee-web-api&lt;/artifactId&gt; &lt;version&gt;&lt;!-- 7.0 (JSF 2.2) or 6.0 (JSF 2.0/2.1) --&gt;&lt;/version&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt;,并提供 scope。由于 Apache TomEE 将附带 Myfaces 实现,请建议或我是否需要使用 Apache TomEE PLUME 来支持 Mojarra。
  • 您应该基本上替换服务器本身的库,而不是通过 webapp 提供。或者替换整个服务器本身。
  • @BalusC:用哪个服务器替换整个服务器本身?没明白你的意思。其次,替换服务器本身的库,您的意思是替换Apache-TomEE-webprofile-1.7.4\lib 的lib 文件夹中的jar。我的困惑是我没有与 AS 合作过。 :)
  • 1) 通过捆绑 Mojarra。 2)这是正确的。也许需要做或考虑更多的事情,这取决于服务器本身。在例如WildFly 比仅仅更换 JAR 需要更多的工作。

标签: maven jakarta-ee el jsf-2.2


【解决方案1】:

MyFaces 支持将 EL ExpressionFactory 配置为使用 (https://myfaces.apache.org/core20/myfaces-impl/webconfig.html),因此它可以是一种强制执行一个 impl 的方法,但您也可以升级到包含 Tomcat 8 的 TomEE 7。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2017-08-09
    相关资源
    最近更新 更多