2013-02-25 1 views
0

포틀릿 간 통신 기능을 구현해야합니다. 기능은 다음과 같습니다.포틀릿 용 스프링 웹 플로우 리디렉션이 작동하지 않습니다.

1) 사용자가 "createStep1.jsp"에서 "다른 이름으로 저장"링크를 클릭합니다.

2) 아래에 언급 된 웹 플로 saveDraftStep1을 호출하면 초안이 데이터베이스에 저장됩니다.

3) 사용자가 다른 포틀릿 myportlet으로 이동하면 성공적으로 저장된 메시지가 여기에 표시됩니다.

어쨌든 웹 플로우가 externalRedirect에 지정한 URL로 리디렉션되지 않습니다. 그것은 같은 페이지에 머물러 있습니다. 아래 코드는 다음과 같습니다 localhost:8080/myportlet :

<view-state id="createStep1"> 
    <transition on="saveDraftStep1" to="redirectView" > 
     <evaluate expression="myAction.bindAndValidate" /> 
     <evaluate expression="myService.saveDraft(saveCriteria, externalContext.nativeRequest,externalContext.nativeResponse)" /> 
    </transition> 
</view-state> 
<end-state id="redirectView" view="externalRedirect:http://www.google.com" /> 

가 이상적으로 난 내 포틀릿 URL 예컨대와 구글의 URL을 대체합니다.

답변

0

evaluate 호출 중 하나가 오류를 반환하면 전환이 수행되지 않습니다. 아마도 그게 무슨 일 이니?

+0

답장을 보내 주셔서 감사합니다. 오류는 없습니다. HTTP : // www가 나는 심지어 \t \t \t <최종 상태 ID = "만약 RedirectView"보기 = "externalRedirect <="만약 RedirectView "에 ="saveDraftStep1 "에 전환> 어떤"평가 "\t없이 다음 시도했다. google.com "/> – Dhaval

+0

리디렉션이 아닌 경우 전환이 작동합니까? 아니면 externalRedirect가 아닌가? – dbreaux

+0

예. 전환은 리디렉션없이 정상적으로 작동합니다. 지금 문제가 해결되었습니다. 아래 "handleExecutionOutcome"메서드를 덮어 써야했습니다. \t 공공 부울 handleExecutionOutcome (리다이렉트 FlowExecutionOutcome 결과 \t \t \t 시도 { \t \t \t \t \t \t \t \t 위해 response.sendRedirect (redirectUrl) \t \t \t \t 복귀는 true, // 결과가 수동으로 \t \t \t 처리} 캐치 (IOException이 e) { \t \t \t \t e.printStackTrace(); \t \t \t} \t \t \t ActionRequest를 요청 ActionResponse의 응답) { \t \t { – Dhaval