Параметр JSF 1.2- ›2.0: viewId для сохранения состояния просмотра имеет значение null

Мы переносим наш проект JSF 1.2 на JSF 2.0 и используем кнопку команды на странице JSP. Нажав кнопку команды, вы получите ответ от внешней системы и отобразите ответ.

При нажатии этой командной кнопки мы получаем пустую страницу с приведенным ниже исключением.

Во время отладки я обнаружил, что мы получаем успешный ответ, но не можем найти исходную страницу, поскольку она потеряла идентификатор просмотра состояния.

[8/13/13 11:01:30:538 CDT] 000000e0 webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[Faces Servlet]: java.lang.NullPointerException: viewId parameter for  save view state is null
    at org.ajax4jsf.application.AjaxStateHolder.saveState(AjaxStateHolder.java:155)
    at org.ajax4jsf.application.AjaxStateManager.saveStateInSession(AjaxStateManager.java:523)
    at org.ajax4jsf.application.AjaxStateManager.buildViewState(AjaxStateManager.java:503)
    at org.ajax4jsf.application.AjaxStateManager.saveView(AjaxStateManager.java:462)
    at org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase.renderView(JspViewDeclarationLanguageBase.java:206)
    at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:169)
    at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
    at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)

Требуется ли какая-либо конкретная конфигурация в web.xml для сохранения состояния просмотра?


person Om P    schedule 13.08.2013    source источник


Ответы (1)


Наличие в трассировке стека классов org.ajax4jsf.*, специфичных для Ajax4jsf 1.x, говорит о том, что вы все еще используете Ajax4jsf для JSF 1.x.

Это не совместимо с JSF 2.x. Вы должны удалить все файлы JAR и регистрации, связанные с Ajax4jsf 1.x, в web.xml. Вместо этого вам нужно использовать собственные средства <f:ajax> JSF или перейти на RichFaces 4.x, который объединяет более новую, совместимую с JSF 2.0 версию тегов <a4j:xxx>. Обратите внимание, что для этого, в свою очередь, требуются Facelets вместо JSP. Поэтому вам также необходимо перейти с JSP на Facelets.

Смотрите также:

person BalusC    schedule 13.08.2013