2013-07-02 3 views
1

У меня есть этот компонент:Как передать параметр для поддержки bean-компонента, используя выражение 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){ 


} 

Благодаря вперед! :)

+0

Возможный дубликат [Вызывать прямые методы или методы с аргументами/переменными/параметрами в EL] (http://stackoverflow.com/questions/3284236/invoke-direct-methods-or-methods-with-arguments-variables- parameters-in-jsf) – BalusC

+1

Важное примечание, которое все, кажется, не видят: функция не специфична для JSF 2.0, а для EL 2.2. – BalusC

ответ

0

Параметры метода являются особенностью 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> 

EDIT

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

<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; 

} 

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

+0

При использовании старых серверов приложений также может потребоваться установка JBoss EL. См. Http://stackoverflow.com/a/3284328/1713801. – alterfox

+0

@alterfox Приятно знать спасибо. – Andy