JSF2 и GAE: передача параметра с помощью выражения метода - PullRequest
2 голосов
/ 14 сентября 2011

Я следовал за учебником 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 (приведенный в руководстве) и нашел только el-api-1.1.jar и el-impl-1.1.jar в качестве последних версий. , Ошибка остается прежней.

Ответы [ 2 ]

1 голос
/ 10 мая 2012

Вы можете использовать `jboss-el.jar 'для этой цели

Здесь .. посмотрите на проблему, открытую в Google по этому поводу

Невозможность использовать EL API2.2

просто поместите jboss-el.jar (из шва jboss 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

Редактировать

Только что заметил, что это старая тема ...

В любом случае, я думаю, что вы можете получить правильный вариант здесь Скачать jboss-el.jar

0 голосов
/ 10 мая 2012

Обычно загрузчик классов сервлета веб-приложения загружает классы в следующем порядке:

  1. WEB-INF / classes
  2. WEB-INF / lib / *. Jar
  3. другие классы из контейнера сервлета.

К сожалению, по соображениям безопасности Google имеет испорченный загрузчик классов, не совместимый с сервлетом, в своих GAE, и их классы имеют приоритет над классами, которые вы могли иметьв банках из ваших WEB-INF / lib или ваших собственных WEB-INF / классов.

Так как GAE связывает EL 1.1, вы застряли с ним, пока Google не решит обновить их версию GAE - не задерживайте дыханиехотя.

...