【问题标题】:javax.el.ELException: Error Parsing: "#{a4jSkin.imageUrl('buttonBackgroundImage.png')}"javax.el.E​​LException:解析错误:“#{a4jSkin.imageUrl('buttonBackgroundImage.png')}”
【发布时间】:2015-04-16 14:50:56
【问题描述】:

我正在尝试在我的 JSF 2.1.29_01 项目中使用 RichFaces 4.5.2.Final,但它并不能完全正常工作。我在web.xml 中添加了以下皮肤参数:

<context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>emeraldTown</param-value>
</context-param>

    <!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map these files with JSF -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<!-- Making the RichFaces skin spread to standard HTML controls -->

<context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>true</param-value>
</context-param>

而且它不起作用。真正不起作用的是无法找到 RichFaces 资源。它们被插入到最终的 HTML 输出中,如下所示:

<link type="text/css" rel="stylesheet" href="/JavaServerFaces
/org.richfaces.resources/javax.faces.resource/org.richfaces
/skinning.ecss?db=eAFL29S2EQAFbwJQ">

但实际上,它们没有被应用,当我尝试访问资源时(类型

localhost:8080/JavaServerFaces 
    /org.richfaces.resources/javax.faces.resource/org.richfaces
    /skinning.ecss?db=eAFL29S2EQAFbwJQtype

通过浏览器我得到 404。之后我尝试将ResourceServlet 添加到我的web.xml 中,如下所示:

<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.richfaces.webapp.ResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/org.richfaces.resources/*</url-pattern>
</servlet-mapping>

现在,当我尝试访问资源时,出现以下异常:

javax.el.ELException: Error Parsing: "#{a4jSkin.imageUrl('buttonBackgroundImage.png')}"
    com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:124)
    com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:141)
    com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:185)
    com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:65)
    com.sun.faces.application.ApplicationImpl.evaluateExpressionGet(ApplicationImpl.java:426)
    org.richfaces.resource.css.CSSVisitorImpl.visitStyleDeclaration(CSSVisitorImpl.java:219)
    org.richfaces.resource.css.AbstractCSSVisitor.visitStyleRule(AbstractCSSVisitor.java:98)
    org.richfaces.resource.css.AbstractCSSVisitor.visitRule(AbstractCSSVisitor.java:61)
    org.richfaces.resource.css.AbstractCSSVisitor.visitStyleSheet(AbstractCSSVisitor.java:48)
    org.richfaces.resource.CompiledCSSResource.getInputStream(CompiledCSSResource.java:124)
    com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:260)
    org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:591)
    org.richfaces.webapp.ResourceServlet.httpService(ResourceServlet.java:129)
    org.richfaces.webapp.ResourceServlet.service(ResourceServlet.java:123)

root cause

com.sun.el.parser.ParseException: Encountered "(" at line 1, column 20.
Was expecting one of:
    "}" ...
    "." ...
    "[" ...
    ">" ...
    "gt" ...
    "<" ...
    "lt" ...
    ">=" ...
    "ge" ...
    "<=" ...
    "le" ...
    "==" ...
    "eq" ...
    "!=" ...
    "ne" ...
    "&&" ...
    "and" ...
    "||" ...
    "or" ...
    "*" ...
    "+" ...
    "-" ...
    "?" ...
    "/" ...
    "div" ...
    "%" ...
    "mod" ...

    com.sun.el.parser.ELParser.generateParseException(ELParser.java:1630)
    com.sun.el.parser.ELParser.jj_consume_token(ELParser.java:1510)
    com.sun.el.parser.ELParser.DeferredExpression(ELParser.java:113)
    com.sun.el.parser.ELParser.CompositeExpression(ELParser.java:40)
    com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:92)
    com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:141)
    com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:185)
    com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:65)
    com.sun.faces.application.ApplicationImpl.evaluateExpressionGet(ApplicationImpl.java:426)
    org.richfaces.resource.css.CSSVisitorImpl.visitStyleDeclaration(CSSVisitorImpl.java:219)
    org.richfaces.resource.css.AbstractCSSVisitor.visitStyleRule(AbstractCSSVisitor.java:98)
    org.richfaces.resource.css.AbstractCSSVisitor.visitRule(AbstractCSSVisitor.java:61)
    org.richfaces.resource.css.AbstractCSSVisitor.visitStyleSheet(AbstractCSSVisitor.java:48)
    org.richfaces.resource.CompiledCSSResource.getInputStream(CompiledCSSResource.java:124)
    com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:260)
    org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:591)
    org.richfaces.webapp.ResourceServlet.httpService(ResourceServlet.java:129)
    org.richfaces.webapp.ResourceServlet.service(ResourceServlet.java:123)

我该如何解决这个问题?

【问题讨论】:

    标签: jsf jsf-2 richfaces


    【解决方案1】:
    #{a4jSkin.imageUrl('buttonBackgroundImage.png')}
    

    在 EL 2.2 之前,不支持使用参数调用 bean 方法的这种 EL 语法。这反过来表明您正在部署到 Servlet 2.5 / EL 2.1 容器或更早版本。

    根据您之前的问题,我认为升级到至少 Servlet 3.0 是不可能的。在这种情况下,您最好在支持给定 EL 2.2 语法(例如 JBoss EL)的 webapp 中提供自定义 EL 2.1 实现。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2016-05-29
      • 1970-01-01
      相关资源
      最近更新 更多