Переменная-преобразователь типа API устарела после JSF 1.1. Вместо этого используйте el-resolver - PullRequest
6 голосов
/ 27 октября 2011

Мы недавно обновили WebSphere Portal v6.1 до v7.0, и теперь у нас есть JSF 1.2.При создании нового проекта портлета в Rad 8 создается файл face-config.xml со следующей записью

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

=> Resolver: com.sun.faces.el.FacesCompositeELResolver@696e696e

Добавление записи вface-config

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

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Ответ IBM на PMR:

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

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

В - Почему в сгенерированном Faces-config.xml все еще используется устаревший метод?

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

В - Будет ли или есть el-resolver для портлетов?

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

0 голосов
/ 05 ноября 2011

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

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

...