0

I'm trying to use in my JSF 2.1.29_01 project the RichFaces 4.5.2.Final, but it's not exasctly working. I added the following skin parameters to my 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>

And it doesn't work. What exactly doesn't work is the RichFaces resources couldn't be found. They were plugged in the final HTML output as follow:

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

but in fact, they were not applied and when I try to reach the resources (type

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

via a browser I get 404. After that I tried to add ResourceServlet into my web.xml as follows:

<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>

Now when I try to reach the resource I get the following exception:

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)

How can I fix that?

BalusC
  • 992,635
  • 352
  • 3,478
  • 3,452
St.Antario
  • 23,179
  • 26
  • 96
  • 243

1 Answers1

2
#{a4jSkin.imageUrl('buttonBackgroundImage.png')}

This EL syntax whereby a bean method is invoked with an argument wasn't supported before EL 2.2. This in turn suggestes that you're deploying to a Servlet 2.5 / EL 2.1 container or older.

Based on your previous questions, I gather that upgrading to at least Servlet 3.0 is not possible. In that case, you'd better supply a custom EL 2.1 implementation along the webapp which supports the given EL 2.2 syntax, such as JBoss EL.

See also:

Community
  • 1
  • 1
BalusC
  • 992,635
  • 352
  • 3,478
  • 3,452