Доступ к другому управляемому компоненту в JSF2.1 с помощью сервлета 2.4 - PullRequest
0 голосов
/ 24 июня 2011

Мы недавно обновили JSF 1.2 до 2.1.Мы работаем в WebSphere 6.1 с Servlet 2.4

Мы используем следующие библиотеки: myfaces 2.1.1 el-api-2.2

Теперь единственная проблема, которая у нас есть, - это то, что мы не можем получить доступ кдругие бэк-бины, как мы делали раньше с:

public static Object getBackingBean( String pName ) {
  ELContext elContext = FacesContext.getCurrentInstance().getELContext();
  Object ret = elContext.getELResolver().getValue(elContext, null, pName);
  return ret;
}

Это всегда будет возвращать ноль.Мы также попробовали:

Beanclass bean = (Beanclass) FacesContext.getCurrentInstance().getApplication()
.getELResolver().getValue(elContext, null, "beanclass");

, которые также возвращают ноль.

Мы пробовали аннотацию @ManagedProperty, но это, очевидно, функция Servlet 2.5.Возможно ли, что ELContext теперь использует DI по умолчанию?Есть ли способ получить Экземпляр другого поддерживающего Бина в JSF2.1 и Servlet 2.4?Спасибо!

Ответы [ 3 ]

2 голосов
/ 18 мая 2012

Я просто хотел уточнить свой вопрос с правильным ответом - хотя Servlet 2.5 требуется, моя задача может быть архивирована без него. Вот как надежно получить экземпляр sessionBean:

BeanClass beanInst = (BeanClass) JSF2Util.findBean("beanClass");

public static <T> T findBean(String beanName) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    Application app = facesContext.getApplication();
    ExpressionFactory elFactory = app.getExpressionFactory();
    ELContext elContext = facesContext.getELContext();
    ValueExpression valueExp = elFactory.createValueExpression(elContext, "#{" + beanName + "}",Object.class);
    return (T) valueExp.getValue(elContext);
}
1 голос
/ 24 июня 2011

Как вы можете прочитать на веб-странице MyFaces :

Для JSF 2.1 требуется Java 1.5 или более поздняя версия, реализация JSP 2.1, JSTL 1.2 и Java Servlet 2.5 .

0 голосов
/ 25 июня 2011

Это правда, что официально JSF 2.1 требует этого, но теоретически возможно запустить MyFaces Core 2.1 с JSP 2.0.Если вы можете запустить приложение с MyFaces Core 1.2.x, есть вероятность, что вы можете сделать это с 2.1, потому что нет технических причин, почему это не может быть запущено.Попробуйте спросить Список пользователей MyFaces .Я проверил, и есть пользователи, которые запускают приложения 1.2.x в WebSphere 6.1, так что, возможно, вам повезет больше.

...