2011-05-09 5 views
0

스프링 웹 플로우에 문제가 있습니다. 내 흐름 XML 정의는 다음과 같습니다 나는 그것을 실행하면동적 동작 상태에 문제가 발생했습니다.

public String verifyHash(String hash) { 
    return "correctVerify"; 
} 

가하는이 같은 오류를 얻을 :

at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.IllegalArgumentException: Cannot find state with id '${goTo}' in flow 'verify' -- Known state ids are 'array<String>['decideAction', 'correctVerify', 'notCorrectVerify', 'start']' 
at org.springframework.webflow.engine.Flow.getStateInstance(Flow.java:348) 
at org.springframework.webflow.engine.support.DefaultTargetStateResolver.resolveTargetState(DefaultTargetStateResolver.java:60) 
at org.springframework.webflow.engine.Transition.execute(Transition.java:217) 
at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391) 
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214) 
at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119) 

<?xml version="1.0" encoding="UTF-8"?> 
<flow xmlns="http://www.springframework.org/schema/webflow" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/webflow 
     http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd" parent="changeLang"> 

    <input name="hash" required="true"/> 

    <action-state id="decideAction"> 
     <set name="flowScope.goTo" value ="verifyActionService.verifyHash(hash)" /> 
     <transition to="${goTo}" ></transition> 
    </action-state> 

    <view-state id="correctVerify" view="registered" model="userAddressesForm"> 
     <transition on="addPhoneNumber" to="correctVerify"> 
      <evaluate expression="verifyActionService.addPhoneNumber(userAddressesForm)" /> 
     </transition> 
     <transition on="deletePhoneNumber" to="correctVerify"> 
      <evaluate expression="verifyActionService.deletePhoneNumber(userAddressesForm, requestParameters.deleteNumber)" /> 
     </transition> 
    </view-state> 

    <view-state id="notCorrectVerify" view="register"></view-state> 

</flow> 

방법은이 같은 상태 ID와 동일 "correctVerify"를 반환 verifyHash

아무도 도와 줄 수 있습니까?

답변

1

transitionto 속성은 문자열 리터럴을 사용합니다. 식의 두 가지 유형에 대한

<transition to="#{goTo}"/> 

정보는 문서의 this 섹션에서 확인할 수 있습니다 : 당신은 문자열 리터럴과 EL을 결합하려는 경우, 당신은 템플릿 표현식을 사용해야합니다.

또한 서비스 레이어에서 뷰 상태 이름을 반환해야합니까? <action-state>의 일반적인 패턴은 <evaluate>을 사용하여 메서드를 호출 한 다음 switch 문과 비슷한 <evaluate> ... 결과에 따라 다른 상태로 다른 전환을 정의하는 것입니다. 액션 상태에 대한 섹션 this을 살펴보십시오.

관련 문제