Как передать параметр резервному компоненту, используя выражение EL в компоненте JSF?

У меня есть этот компонент:

<t:outputText value="#{bean.name}">

Я хочу вызвать метод с параметром в выражении EL вместо вызова геттера, но у меня нет JSF 2.0.

Как я могу передать параметр методу в компоненте поддержки, используя выражение EL без JSF 2.0?

Другими словами, я хочу сделать что-то вроде этого:

 <t:outputText value="#{bean.findName(#{bean.name})}">

Внешнее выражение: для вызова метода с параметром в компоненте поддержки.

Внутреннее выражение: вызывает геттер для использования в качестве параметра в методе.

Метод в фоновом компоненте:

public String findName(String name){


}

Спасибо впереди! :)


person MightGod    schedule 02.07.2013    source источник
comment
comment
Важное замечание, которое, кажется, не замечают все: функция относится не только к JSF 2.0, но и к EL 2.2.   -  person BalusC    schedule 02.07.2013


Ответы (1)


Параметры метода являются функцией EL 2.2, поэтому вам необходимо загрузить соответствующие JAR-файлы и добавить их в свой проект. Если вы используете Maven, перейдите по этой ссылке

https://uel.java.net/download.html

(или идите прямо к центру Maven)

Затем добавьте следующее в web.xml

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

ИЗМЕНИТЬ

Это продолжение вашего комментария. Вы могли бы сделать что-то вроде этого.

<h:inputText value="#{bean.id}">  <---This one will set the id
<h:outputText value="#{bean.name}"> <--- This one will display the name

и определите свои методы следующим образом

private Integer id; //Make setter and getter
private String name; //Make setter and getter for this. 

private Integer setId(Integer id) { //Make a getter also
   name = findName(id); // <--- Set the name property there
}

public String findName(Integer id) { 

    return name found in db; 

}

Это просто идея.

person Andy    schedule 02.07.2013
comment
При использовании старых серверов приложений также может потребоваться установка JBoss EL. См. stackoverflow.com/a/3284328/1713801. - person alterfox; 06.12.2013