Поддержка параметров в EL намечена для следующего технического выпуска JSR 245 (объявление здесь ; реализация здесь ).
Если вы не хотите ждать JEE6, у вас есть несколько способов преодолеть это ограничение. Эти подходы определены в терминах управляемых компонентов POJO, поэтому, при необходимости, адаптируйте их к своим EJB-компонентам.
1
Выполните поиск сеанса и вызов функции в компоненте поддержки:
public String getFoo() {
FacesContext context = FacesContext
.getCurrentInstance();
ExternalContext ext = context.getExternalContext();
String bar = (String) ext.getSessionMap().get("bar");
return getFoo(bar);
}
Пример привязки:
#{paramBean.foo}
2
Используйте функцию EL (определенную в TLD, сопоставленную с общедоступным статическим методом):
public static String getFoo(ParamBean bean, String bar) {
return bean.getFoo(bar);
}
Пример привязки:
#{baz:getFoo(paramBean, bar)}
3.
Подвергнуть класс Map для вызова функции (немного взломать и ограничиться одним параметром):
public Map<String, String> getFooMap() {
return new HashMap<String, String>() {
@Override
public String get(Object key) {
return getFoo((String) key);
}
};
}
Пример привязки:
#{paramBean.fooMap[bar]}