SWF в JSF 2.2 вызывает java.lang.NullPointerException в com.sun.faces.application.NavigationHandlerImpl.determineViewFromActionOutcome

У меня есть приложение JSF 2.2 + Spring WebFlow. Когда кнопка ниже команды нажата

<h:commandButton value="Aggiungi" action="#{pageController.modifica}" /> 

вызывается следующее действие

public String modifica() {
    // ...
    return "gest";
}

и следующий навигационный случай должен быть решен

<navigation-case>
    <from-action>#{pageController.modifica}</from-action>
    <from-outcome>gest</from-outcome>
    <to-view-id>/newxhtml.xhtml</to-view-id>
    <redirect />
</navigation-case>

выбрасывается следующее исключение

java.lang.NullPointerException
    at com.sun.faces.application.NavigationHandlerImpl.determineViewFromActionOutcome(NavigationHandlerImpl.java:1204)
    at com.sun.faces.application.NavigationHandlerImpl.findExactMatch(NavigationHandlerImpl.java:568)
    at com.sun.faces.application.NavigationHandlerImpl.getViewId(NavigationHandlerImpl.java:462)
    at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:189)
    at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:182)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:132)
    at org.springframework.faces.webflow.FlowActionListener.processAction(FlowActionListener.java:71)
    at org.springframework.faces.model.SelectionTrackingActionListener.processAction(SelectionTrackingActionListener.java:55)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    ... 63 more

Чем это вызвано и как я могу это решить?


Я увеличил весенний поток-веб до версии 2.4.0, но у меня та же ошибка. Возможно, есть и другие несоответствия в списке jar в библиотеке. Вот полный список:

19/02/2015  17.44             4.467 aopalliance-1.0.jar
19/02/2015  17.44           304.373 commons-fileupload-1.3-javadoc.jar
19/02/2015  17.44            86.398 commons-fileupload-1.3-sources.jar
19/02/2015  17.44            36.475 commons-fileupload-1.3-test-sources.jar
19/02/2015  17.44            49.314 commons-fileupload-1.3-tests.jar
19/02/2015  17.44            67.986 commons-fileupload-1.3.jar
19/02/2015  17.44            62.050 commons-logging-1.1.3.jar
19/02/2015  17.44             2.497 javax.inject-1.jar
19/02/2015  17.44           634.222 jsf-api-2.1.7.jar
19/02/2015  17.44         1.962.213 jsf-impl-2.1.7.jar
19/02/2015  17.44           100.636 jsp-api-2.1.jar
19/02/2015  17.44           414.240 jstl-1.2.jar
19/02/2015  17.44           954.038 mysql-connector-java-5.1.30.jar
19/02/2015  17.44           592.322 postgresql-9.3-1102.jdbc41.jar
19/02/2015  17.44         1.824.331 primefaces-3.5.jar
19/02/2015  19.04                 0 print.txt
19/02/2015  17.44           105.112 servlet-api-2.5.jar
19/02/2015  17.44            29.868 smoothness-1.0.10.jar
19/02/2015  17.44           337.694 spring-aop-3.2.8.RELEASE.jar
19/02/2015  17.44           612.569 spring-beans-3.2.8.RELEASE.jar
19/02/2015  17.44           148.444 spring-binding-2.3.2.RELEASE.jar
19/02/2015  17.44           866.273 spring-context-3.2.8.RELEASE.jar
19/02/2015  17.44           873.608 spring-core-3.2.8.RELEASE.jar
19/02/2015  17.44           196.367 spring-expression-3.2.8.RELEASE.jar
19/02/2015  17.44           194.947 spring-faces-2.3.2.RELEASE.jar
19/02/2015  17.44           405.717 spring-jdbc-3.2.8.RELEASE.jar
19/02/2015  17.44            17.381 spring-js-2.3.2.RELEASE.jar
19/02/2015  17.44         4.412.472 spring-js-resources-2.3.2.RELEASE.jar
19/02/2015  17.44            83.412 spring-security-acl-3.2.3.RELEASE.jar
19/02/2015  17.44           406.536 spring-security-config-3.2.3.RELEASE.jar
19/02/2015  17.44           359.633 spring-security-core-3.2.3.RELEASE.jar
19/02/2015  17.44           342.300 spring-security-web-3.2.3.RELEASE.jar
19/02/2015  17.44           242.436 spring-tx-3.2.8.RELEASE.jar
19/02/2015  17.44           628.456 spring-web-3.2.8.RELEASE.jar
19/02/2015  17.44           565.416 spring-webflow-2.4.0.RELEASE.jar
19/02/2015  17.44           637.903 spring-webmvc-3.2.8.RELEASE.jar

Обновление (26.02.2015) Я провел много тестов и, наконец, изменил список библиотек и файлов конфигурации, но, к сожалению, у меня все еще есть та же ошибка (с той же трассировкой).

Вот новый список библиотек

aopalliance-1.0.jar
commons-fileupload-1.3-javadoc.jar
commons-fileupload-1.3-sources.jar
commons-fileupload-1.3-test-sources.jar
commons-fileupload-1.3-tests.jar
commons-fileupload-1.3.jar
commons-logging-1.1.3.jar
javax.inject-1.jar
jsf-api-2.1.7.jar
jsf-api-2.2.0-m03.jar
jsf-impl-2.1.7.jar
jsf-impl-2.2.0.jar
jsp-api-2.1.jar
jstl-1.2.jar
mysql-connector-java-5.1.30.jar
org.springframework.binding-2.0.5.RELEASE.jar
postgresql-9.3-1102.jdbc41.jar
primefaces-3.5.jar
servlet-api-2.5.jar
smoothness-1.0.10.jar
spring-aop-3.2.6.RELEASE.jar
spring-beans-4.0.2.RELEASE.jar
spring-binding-2.4.0.RELEASE.jar
spring-context-4.0.2.RELEASE.jar
spring-core-4.0.2.RELEASE.jar
spring-expression-4.0.2.RELEASE.jar
spring-faces-2.3.1.RELEASE.jar
spring-jdbc-4.0.2.RELEASE.jar
spring-js-2.4.0.RELEASE.jar
spring-js-resources-2.4.0.RELEASE.jar
spring-jsf.jar
spring-orm-4.0.2.RELEASE.jar
spring-security-config-3.2.3.RELEASE.jar
spring-security-core-3.2.0.RELEASE.jar
spring-security-taglibs-3.2.3.RELEASE.jar
spring-security-web-3.2.3.RELEASE.jar
spring-tx-4.0.2.RELEASE.jar
spring-web-4.0.2.RELEASE.jar
spring-webflow-2.3.2.RELEASE.jar
spring-webflow-2.4.0.RELEASE.jar
spring-webmvc-4.0.2.RELEASE.jar
spring-webmvc-portlet-4.0.2.RELEASE.jar

Кажется, между библиотеками существует несовместимость.


person vince    schedule 19.02.2015    source источник
comment
ваш класс PageController, как вы аннотировали?   -  person Joe Taras    schedule 19.02.2015
comment
Здесь виноват Spring WebFlow. Какая именно версия? Пробовали обновиться до последней? В будущих вопросах всегда указывайте точные версии библиотек, задействованных в приложении (по крайней мере, тех, которые задействованы в трассировке стека).   -  person BalusC    schedule 19.02.2015
comment
Я поместил PageController в Faces.config.xml   -  person vince    schedule 19.02.2015
comment
Не обращайте внимания на Джо, он не понял трассировку стека. Эта информация PageController не имеет значения. В будущих вопросах, связанных с JSF, также избегайте использования тега [java] в вопросе. Это только привлечет пользователей, ничего не знающих о JSF и связанных с ним библиотеках, и, таким образом, опубликует запутанные комментарии с просьбой предоставить не относящуюся к делу информацию.   -  person BalusC    schedule 19.02.2015
comment
Spring-webflow-2.3.2_RELEASE.jar   -  person vince    schedule 19.02.2015


Ответы (1)


Это вызвано комбинацией Spring WebFlow 2.3.x и JSF 2.2. Вам необходимо обновить Spring WebFlow до версии, совместимой с JSF 2.2, то есть не ниже 2.4.x.

Техническая проблема заключается в том, что SWF 2.3.x использовал реализация Application, которая не была должным образом расширена из javax.faces.application.ApplicationWrapper и, таким образом, пришлось вручную реализовать/делегировать все Application метода обернутому приложению. В случае SWF 2.3.x все эти методы были основаны на JSF 2.1. В JSF 2.2 новый метод getFlowHandler() был добавлен к Application, который не был должным образом делегирован SWF и, таким образом, вернул null, вызывая все проблемы дальше по цепочке, полагаясь на то, что он не является null. Если бы ребята из SWF должным образом расширили ApplicationWrapper вместо жесткого кодирования всех методов делегата для конкретной версии JSF, то он безупречно работал бы во всех версиях JSF.

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

person BalusC    schedule 19.02.2015
comment
Я увеличил весенний поток-веб до версии 2.4.0, но у меня та же ошибка. Возможно, есть и другие несоответствия в списке jar в библиотеке. Я добавил в вопросе полный список. - person vince; 19.02.2015
comment
С точно такой же трассировкой стека? Если это так, то он не был должным образом очищен/восстановлен. - person BalusC; 19.02.2015
comment
Обновление (26.02.2015) Я провел много тестов и, наконец, изменил список библиотек и файлов конфигурации, но, к сожалению, у меня все еще есть та же ошибка (с той же трассировкой). Новый список библиотек отображается в обновлении приложения - person vince; 26.02.2015
comment
У вас в списке есть и SWF 2.3.2, и 2.4.0..? - person BalusC; 28.02.2015