2014-05-21 29 views
0

我一直在使用JSF 2.1 mojarra-2.1.20,我已經在我的faces-config.xml導航的情況下配置是這樣的:面孔,配置與-結果不是字符串(布爾)失敗,NullPointerException異常

<navigation-rule> 
    <from-view-id>/loggedOut.xhtml</from-view-id> 
    <navigation-case> 
     <from-action>#{sessionManager.isLoggedIn}</from-action> 
     <from-outcome>true</from-outcome> 
     <to-view-id>/login.xhtml</to-view-id> 
     <redirect /> 
    </navigation-case> 
</navigation-rule> 

該動作使用seam-faces viewAction(類似於JSF 2.2新標籤)執行。一切工作正常。

今天我已經升級到JSF 2.2與mojarra-2.2.6,並瀏覽到視圖loggedOut.xhtml停止工作。它會拋出這個堆棧跟蹤:

java.lang.NullPointerException 
    at com.sun.faces.application.NavigationHandlerImpl.determineViewFromActionOutcome(NavigationHandlerImpl.java:1342) 
    at com.sun.faces.application.NavigationHandlerImpl.findExactMatch(NavigationHandlerImpl.java:603) 
    at com.sun.faces.application.NavigationHandlerImpl.getViewId(NavigationHandlerImpl.java:481) 
    at com.sun.faces.application.NavigationHandlerImpl.getNavigationCase(NavigationHandlerImpl.java:149) 
    at com.sun.faces.application.NavigationHandlerImpl.getNavigationCase(NavigationHandlerImpl.java:140) 
    at org.jboss.seam.faces.event.SeamPreNavigationHandler.getNavigationCase(SeamPreNavigationHandler.java:42) 
    at org.jboss.seam.faces.event.SeamPreNavigationHandler.handleNavigation(SeamPreNavigationHandler.java:57) 
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:132) 
    at org.jboss.seam.faces.component.UIViewAction.broadcast(UIViewAction.java:381) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) 
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
    ... 

我有更多的導航像這樣,並且它們都以相同的方式失敗。此導航與其他案例和示例的唯一區別是from-outcome的值爲boolean而不是String。所以我的問題是:

  • 應該from-outcome的失敗,當它不是String
    • 如果是這樣,不應該失敗,更「可讀」的消息?
    • 否則,是mojara的錯誤?
  • 版本2.1錯了嗎?

我知道如何「修復它」:使用{dummyAction.execute}並檢查<if>標記中的布爾值。但我更喜歡執行真正的行動,而不是2個不同。

回答

相關問題