JSF вызывая произвольные методы через EL - PullRequest
1 голос
/ 29 декабря 2010

Я новичок в JSF и у меня проблемы с вызовом произвольных методов через EL.
Согласно тому, что я прочитал, версия 2.1 языка унифицированных выражений, включенного в Java EE 6, поддерживает вызов произвольных методов и передачу им аргументов.
Я использую MyFaces2.0.3, JRE6Up21, Tomcat 6.0.29 и Eclipse.
У меня есть следующий фрагмент в лицевой стороне:

<h:form>
<p>
<h:link outcome="NextPage" value="Link for Next Page">
<f:param name="word1" value="hello" />
<f:param name="word2" value="world" />
</h:link>
</p>
</h:form>

и в лицевой стороне NextPage.xhtml

<h:form>
<p>
This is the method invocation #{model.printArgs(param.word1,param.word2)}
</p>
</h:form>  

Model - это управляемый компонент (в области запроса), который имеет этот метод printArgs, который возвращает конкатенацию строк word1 и word2.

@ManagedBean
@SessionScoped
public class Model {

public String printArgs(String word1, String word2) {
        String result = "No arguments??????";

        if (null != word1 && !word1.isEmpty() && null != word2 && !word2.isEmpty()) {
            result = word1+" "+word2;
        }
        return result;

    }

}

Когда я нажимаю на ссылку, URL-адрес http://localhost:8080/RegJSF/faces/NextPage.xhtml?word1=hello&word2=world
но я получаю ошибку

org.apache.el.parser.ParseException: Обнаружено "" ("" ("" в строке 1, колонка 25. Ожидал одного из: "}" ... "." ... "[" ... ">" ... "gt" ... "<" ... "lt" ... "> =" ... "ge" ... "<=" ... и т. д. </p>

Если я удаляю #{model.printArgs(param.word1,param.word2)}, загружается NextPage, поэтому проблема заключается в вызове метода.
В чем здесь проблема? Это проблема конфигурации?
Примечание Та же проблема, если я использую Mojarra2.0.3
Может кто-нибудь помочь, пожалуйста?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 29 декабря 2010

Согласно тому, что я прочитал, версия 2.1 языка унифицированных выражений, включенного в Java EE 6, поддерживает вызов произвольных методов и передачу им аргументов.

Я думаю, что вы ошибаетесь. Эта поддержка была введена в JSP 2.2 (которая требуется для соответствия спецификации JEE6).

Из спецификации JSP 2.2 :

Изменения между техническим обслуживанием 1 и техническим обслуживанием версии 2

Основным изменением в этом выпуске является добавление вызовов методов с параметры в EL, такие как #{trader.buy(“JAVA”)}.

Поскольку Tomcat 6 является контейнером JSP 2.1, вы можете рассмотреть возможность обновления до Tomcat 7.

0 голосов
/ 29 декабря 2010

запись

This is the method invocation <h:outputText value="#{model.printArgs(param.word1,param.word2)}"/>

Двойные кавычки необходимы здесь.Кроме того, вместо этого попробуйте outputText.

...