2013-08-27 2 views
2

При попытке использовать WebFlow, я получаю следующее сообщение об ошибке:NPE при попытке визуализации представления в Spring WebFlow

{ 
    "failure":"true", 
    "exception.message":"org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [email protected]5beb in state 'accountCannotLogInView' of flow 'login' -- action execution attributes were 'map[[empty]]'", 
    "exception.stacktrace":"org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [email protected]5beb in state 'accountCannotLogInView' of flow 'login' -- action execution attributes were 'map[[empty]]' 
    ... 
    Caused by: java.lang.IllegalStateException: Exception occurred rendering view null 
     at org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:191) 
     at org.springframework.webflow.action.ViewFactoryActionAdapter.doExecute(ViewFactoryActionAdapter.java:40) 
     at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) 
     at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51) 
     ... 66 more 
    Caused by: java.lang.NullPointerException 
     at org.springframework.webflow.mvc.servlet.ServletMvcView.doRender(ServletMvcView.java:50) 
     at org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:187) 
     ... 69 more 
    " 
} 

Кто-нибудь есть какие-либо идеи, что причина этого может быть? Из моего входа-webflow.xml:

<action-state id="checkAccountType"> 
    <evaluate expression="lookupAccountTypeAction.lookup(flowScope.principal)" /> 
    <transition on="EMAIL" to="accountCannotLogInView" /> 
    <transition on="Login" to="checkAccountStatus" /> 
    <transition on="CONTACT" to="accountCannotLogInView" /> 
</action-state> 

<end-state id="accountCannotLogInView" view="myAccountCannotLogInView"/> 

От default_views.properties:

myAccountCannotLogInView.(class)=org.springframework.web.servlet.view.JstlView 
myAccountCannotLogInView.url=/WEB-INF/view/jsp/default/ui/myAccountCannotLogInView.jsp 

Из моего файла журнала:

2013-09-09 08:29:25,645 DEBUG [org.springframework.webflow.engine.EndState] - Entering state 'accountCannotLogInView' of flow 'login' 
2013-09-09 08:29:25,645 DEBUG [org.springframework.webflow.execution.ActionExecutor] - Executing [email protected]136a 
2013-09-09 08:29:25,645 DEBUG [org.springframework.webflow.mvc.view.AbstractMvcView] - Rendering MVC [null] with model map [{flowRequestContext=[[email protected] externalContext = [email protected]74, currentEvent = EMAIL, requestScope = map['ticketGrantingTicketId' -> 'TGT-1-GxALVR7PEtbagbnRlStOTbHoRHlb61YVm1m2hvWx3pgWCEXgPb-cas01.example.org'], attributes = map[[empty]], messageContext = [[email protected] sourceMessages = map[[null] -> list[[empty]]]], flowExecution = [[email protected] flow = 'login', flowSessions = list[[[email protected] flow = 'login', state = 'accountCannotLogInView', scope = map['principal' -> sso_test_user, 'userInfoBean' -> [email protected][username=<null>,firstName=<null>,lastName=<null>,emailAddress=<null>,streetAddress=<null>,city=<null>,state=<null>,zip=<null>,country=<null>], 'changePasswordBean' -> com.mycompany.authentication.ChangePasswordBean(username=null, newPassword=null, confirmNewPassword=null), 'service' -> https://my.server.com:443/casauth/facade/norenew?idp=https://my.server.com/idp/externalAuthnCallback, 'credentials' -> [username: sso_test_user], 'warnCookieValue' -> false, 'ticketGrantingTicketId' -> 'TGT-1-GxALVR7PEtbagbnRlStOTbHoRHlb61YVm1m2hvWx3pgWCEXgPb-cas01.example.org']]]]], flashScope=map[[empty]], principal=sso_test_user, currentUser=null, [email protected][username=<null>,firstName=<null>,lastName=<null>,emailAddress=<null>,streetAddress=<null>,city=<null>,state=<null>,zip=<null>,country=<null>], changePasswordBean=com.mycompany.authentication.ChangePasswordBean(username=null, newPassword=null, confirmNewPassword=null), service=https://my.server.com:443/casauth/facade/norenew?idp=https://my.server.com/idp/externalAuthnCallback, credentials=[username: sso_test_user], flowExecutionKey=e1s1, warnCookieValue=false, flowExecutionUrl=/authentication/login?username=%5BLjava.lang.String%3B%405b65afa5&submit=%5BLjava.lang.String%3B%4070eea883&_eventId=%5BLjava.lang.String%3B%4044796a61&service=%5BLjava.lang.String%3B%407f372965&lt=%5BLjava.lang.String%3B%407e7ee722&password=%5BLjava.lang.String%3B%403d78aa0f&execution=%5BLjava.lang.String%3B%403ce4de50, ticketGrantingTicketId=TGT-1-GxALVR7PEtbagbnRlStOTbHoRHlb61YVm1m2hvWx3pgWCEXgPb-cas01.example.org}] 
2013-09-09 08:29:25,645 DEBUG [org.springframework.webflow.engine.impl.FlowExecutionImpl] - Attempting to handle [org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing [email protected]136a in state 'accountCannotLogInView' of flow 'login' -- action execution attributes were 'map[[empty]]'] with root cause [java.lang.NullPointerException] 
2013-09-09 08:29:25,645 DEBUG [org.springframework.webflow.engine.impl.FlowExecutionImpl] - Rethrowing unhandled flow execution exception 

И да, файл не существует в этом месте , Я несколько раз стучала по этому поводу, поэтому, если кто-нибудь знает, я бы очень признателен.

+0

Я не понимаю, как вы должны получить значение свойства для вашего flow.xml, но попытались ли вы использовать жесткий путь? или вы пытались добавить '.url' в свое состояние? –

+0

Я тоже не знаю - CAS обрабатывает это. Я очень новичок как в CAS, так и в Spring Webflow, и не особенно взволнован с этим прямо сейчас. :-) Вы имеете в виду, что есть способ разместить URL-адрес непосредственно в теге ? –

+0

он работает в моей заявке –

ответ

2

И правильный ответ "ошибка пользователя". Я строю CAS через maven. Я создал профили для ведения журнала, а затем неправильно настроил его так, чтобы файл default_views.properties не был в профилях. В результате, когда CAS сделал свой оверлей как часть сборки maven, он включил базовую версию default_views.properties вместо моей копии.

1

кажется, что ваше свойство не анализируется вашим flow.xml.

определение вашего жесткого кодирования должно работать.

посмотреть здесь: Specifying view identifiers

+0

К сожалению, этого не произошло. Я все еще получаю NPE. :-( –

+0

Потому что вы подтолкнули меня в правильном направлении, я собираюсь наградить вас щедростью. Мне просто нужно подождать 22 часа, чтобы сделать это. –

+0

wow большое спасибо! –

0

Причина данной проблемы: вид JSP не найден.

В КАН-servlet.xml, упомяните файл свойств, который имеет базовое имя пользовательского JSP зрения внутри «viewResolver» боб, как показано ниже:

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.ResourceBundleViewResolver" 
    p:order="0"> 
    <property name="basenames"> 
     <util:list> 
      <value>${cas.viewResolver.basename}</value> 
      <value>custom_view</value> 
      <value>protocol_views</value> 
     </util:list> 
    </property> 
</bean> 

И в custom_view.properties, отметим следующий :

casRegisterView.(class)=org.springframework.web.servlet.view.JstlView 
casRegisterView.url=/WEB-INF/view/jsp/default/ui/casRegisterView.jsp 

Здесь вид JSP - «casRegisterView.jsp». Место custom_view.properties в/src/main/resources.

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