2010-01-06 19 views
3

我正在做一个即将在Websphere上运行的项目。在Websphere中使用JBoss EL

我在这个项目中使用了JSF/Facelets/Richfaces。

我想使用JBoss的EL实现,因为它允许调用带有参数的方法从EL等

...通常这是通过获取了JBoss EL罐子,然后把这个在web.xml中完成的:

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

但是,这不工作......我不知道它是否与Websphere的问题或...?

<a4j:commandLink value="Delete" action="#{mcsaAdmin.deleteLanguage(1234)}" /> 

看着它出现的堆栈跟踪仍然可以使用标准:

要去页面时说,它不能解析EL在那里我度过了一个方法的参数,我得到一个堆栈跟踪太阳EL:

Caused by: javax.el.ELException: Error Parsing: #{mcsaAdmin.deleteLanguage(1234)} 
at com.sun.el.lang.ExpressionBuilder.createNodeInternal(Unknown Source) 
at com.sun.el.lang.ExpressionBuilder.build(Unknown Source) 
at com.sun.el.lang.ExpressionBuilder.createMethodExpression(Unknown Source) 
at com.sun.el.ExpressionFactoryImpl.createMethodExpression(Unknown Source) 
at com.sun.facelets.tag.TagAttribute.getMethodExpression(TagAttribute.java:141) 

注意 'com.sun.el.E​​xpressionFactoryImpl' 而不是 'org.jboss.el.E​​xpressionFactoryImpl' 如上规定...

我是obvi做某事错了吗?任何人都有任何想法......我使用majorra项目的标准JSF实现或sun网站和richfaces 3.1.4和facelets 1.1.14提供的任何想法。

+0

你有没有解决这个问题?我面临同样的问题。 – Shahzeb 2012-02-01 03:34:25

回答

0

这可能是由于类路径范围问题。你在哪里复制你的jboss el jar?

0

你说得对。包括classpath中/WEB-INF/lib目录的jboss-el.jar并在web.xml中定义

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

有一定的局限性。见here

如果您想了解表达式语言的好insith,见Extending the Java EE Unified Expression Language with a Custom ELResolverFAQ about Expression Language

问候,

+0

我已经把jar放在了服务器上的共享lib安装程序中。我已经尝试将类加载器设置为parent_first和parent_last:\ Thx有关限制的说明,但我对EL非常熟悉,但从未用过这种方法: – rat 2010-01-07 15:24:57

1

也许问题是不是与WebSphere,但JSF实现,因为“的com.sun .faces.expressionFactory“是JSF实现特定的。当我使用的MyFaces的correct param name是“org.apache.myfaces.EXPRESSION_FACTORY”时,我遇到了同样的问题。

0

您是否将类加载器设置为正确?在websphere中,您必须在多个设置中设置类加载器。 将Web模块类加载器设置为父最后,将应用程序类加载器设置为父最后。

如果两者最后都不在父亲身上,则可能不会使用自己的罐子,而是使用websphere提供的罐子。