我按照Google的说明进行了教程,并将el-api-2.2.jar
和el-impl-2.2.jar
添加到WEB-INF/lib
。我的测试用例很简单:
<f:view contentType="text/html">
<h:form id="f1">
<p:commandLink action="#{parameterBean.test(myString)}">
<h:outputText value="test"/>
</p:commandLink>
</h:form>
</f:view>
操作方法只是public void test(String s) {log.log(Level.INFO, "T: "+s);}
。 I日志显示(在页面的初始呈现期间):
javax.faces.view.facelets.TagAttributeException: /jsf/admin/test/parameter.xhtml
@15,62 action="#{parameterBean.test('myString')}" Error Parsing:
#{parameterBean.test('myString')}
...
Caused by: javax.el.ELException: Error Parsing: #{parameterBean.test('myString')}
...
Caused by: org.apache.el.parser.ParseException: Encountered " "(" "( ""
at line 1, column 21.
Was expecting one of: "}" "." "[" ">" ...
我认为这个错误是GAE特定的,我想知道org.apache.el.parser
在游戏中的位置,因为el-libs提供以下包:
el-api-2.2.jar
:javax.el.*
el-impl-2.2.jar
:com.sun.el.*
注意在调查此问题期间,我再次检查了Unified Expression Language web site(在教程中给出)并且仅找到el-api-1.1.jar
和el-impl-1.1.jar
作为最新版本。错误保持不变。
答案 0 :(得分:1)
您可以将`jboss-el.jar'用于此目的
在这里..看一下谷歌关于它的问题
将jboss-el.jar(jboss seam 2)放入lib文件夹
并在web.xml中添加此行
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
目前无法找到jar的直接链接...我猜需要一些googleing
现在发现了这个.... http://www.seamframework.org/Seam2/Downloads
修改强>
刚刚注意到它的旧线程......
无论如何,我认为你可以从Download jboss-el.jar
获得正确的答案答案 1 :(得分:0)
通常,Web应用程序servlet类加载器按以下顺序加载类:
不幸的是,出于安全原因,Google在他们的GAE上有一个混乱的非Servlet符合类加载器,并且他们的类优先于您在WEB-INF / lib或您自己的WEB-INF的jar中可能拥有的类/类。
由于GAE捆绑了EL 1.1,因此谷歌决定更新他们的GAE版本之前一直坚持下去 - 不要屏住呼吸。