2011-10-27 6 views
6

Недавно мы обновили версию WebSphere Portal v6.1 до версии 7.0, и теперь у нас есть JSF 1.2. Создание нового портлета проекта в Rad 8 создает рожи-config.xml со следующей записьюТип API переменной-резольвер устарел после JSF 1.1. Вместо этого используйте el-resolver

<application> 
    <state-manager>com.ibm.faces.application.DevelopmentStateManager</state-manager> 
    <variable-resolver>com.ibm.faces.portlet.PortletVariableResolver</variable-resolver> 
</application> 

А потом жалуется: Тип API переменного распознаватель осуждаются после JSF 1.1. Вместо этого используйте el-resolver.

К сожалению, я не смог найти ответ на страницах IBM, для которых используется el-resolver.

Редактировать:

System.out.println("Resolver: " + PortalUtil.getFacesContext().getApplication().getELResolver()); 

=> Резольвер: [email protected]

Добавление записи в конфигурации граней-

<el-resolver>com.sun.faces.el.FacesCompositeELResolver</el-resolver> 

С или без удаления переменный-резольвер приводит к:

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory 
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:270) 
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:164) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358) 
    ... 89 more 

PMR с IBM открыт ...

+0

Разве это не поможет? http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/2.1/docs/jsp-2_1-pfd2/javax/el/ELResolver.html – Brad

+0

Предупреждающее сообщение от RAD: Класс javax.el. ELResolver должен быть конкретным (не абстрактным). – Stefan

+0

Мы используем Spring, и существует org.springframework.web.jsf.DelegatingVariableResolver. Он работает нормально.Может быть, попробуйте добавить зависимость для этого резольвера? Положите его как org.springframework.web.jsf.DelegatingVariableResolver JMelnik

ответ

1

IBMs ответ на PMR:

Q - Какие могут быть последствия игнорирования предупреждения?

Ans - Пользователь все еще может использовать переменный резольвер, функциональность не будет затронута. [Этот тег будет сохранен для обратной совместимости]

Q - Почему сгенерированные faces-config.xml все еще используют устаревший метод?

Ans - Мы используем переменный распознаватель для решения портлетов переменных, которые будут хорошо работать даже с JSF 1.2

Q - Будут ли или есть эль-распознаватель для портлетов?

Ans - Для портлетов будет el-resolver. Он будет представлен в портлете 2.0 портлетов JSF, который будет отправлен в качестве обновления для WAS. В настоящее время он находится на стадии планирования, поэтому я не могу дать вам точную версию, в которой это можно найти.

0

Ненавижу говорить об этом, но если мы говорим об асинхронном веб-приложении, то вы мертвы в воде.

JSF 1.2 введена «известная ошибка» (я всегда любил эту фразу) является FaceletsRenderer класс, который мешает вам асинхронно рендеринга JSF компоненты (потому что все aynchronousity в JSF использует подделатьFacesContext, а не функциональный, который может для рендеринга). Вам нужен JS6 2.1 JEE6 для этого, иначе вам понадобится другое решение в целом, как указано в его/ее комментарии @D1e. Желаем удачи вашей организации.

+0

Я смущен, как асинхронные веб-приложения могут быть связаны с вопросом. Тем более, что stacktrace содержит 'FacesServlet.init', который выполняется перед любой обработкой запроса. –

+0

Хм не использовал Facelets. – Stefan

 Смежные вопросы

  • Нет связанных вопросов^_^