【问题标题】:JSF2 and GAE: Passing parameter with Method ExpressionJSF2 和 GAE:使用方法表达式传递参数
【发布时间】:2011-11-16 18:47:34
【问题描述】:

我按照Google 的教程进行操作,并将el-api-2.2.jarel-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>

action 方法只是一个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.jarel-impl-1.1.jar是最新版本。错误保持不变。

【问题讨论】:

    标签: java google-app-engine jsf-2 el


    【解决方案1】:

    您可以为此目的使用 `jboss-el.jar'

    这里..看看在谷歌上打开的关于它的问题

    Inability to use EL API 2.2

    只需将 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 的直接链接...我想需要一些谷歌搜索

    暂时找到这个....http://www.seamframework.org/Seam2/Downloads

    编辑

    刚刚注意到它是一个旧线程......

    无论如何,我认为您可以从这里得到正确的Download jboss-el.jar

    【讨论】:

    • 这适用于我在本地主机上。不过,我无法在部署中使用它!
    • 确保您确实部署了正确的 jar。并确保您正在运行应用程序的更新版本(尝试终止以前的会话等),如果这对尝试提出新问题没有帮助。
    【解决方案2】:

    通常,Web 应用程序 servlet 类加载器按以下顺序加载类:

    1. WEB-INF/类
    2. WEB-INF/lib/*.jar
    3. servlet 容器中的其他类。

    不幸的是,出于安全原因,Google 在他们的 GAE 上有一个不符合 Servlet 标准的类加载器,并且他们的类优先于你在 WEB-INF/lib 或你自己的 WEB-INF 的 jar 中的类/类。

    由于 GAE 捆绑了 EL 1.1,在 google 决定更新他们的 GAE 版本之前,您一直坚持使用它 - 不过不要屏住呼吸。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2012-12-27
      相关资源
      最近更新 更多