2010-06-16 6 views
3

저는 spring webflow 1.0을 사용하고 있습니다. 진행하기 전에 CSV 파일을 업로드하고 파싱하고 결과를 표시합니다. 사용자는 유효성 검사를 통과하지 못한 레코드가 포함 된 csv 파일을 다운로드 할 수 있습니다. 이 파일을 다운로드하기 위해 JSP에서 링크를 클릭하면 웹 플로우가 양식 작업을 호출합니다. 양식 조치는 응답 떨어져 출력 스트림을 얻기를 통해 파일을 씁니다 : 내가 현재 해요 JSP를 떠나고 싶어하지 않는Spring webflow 1.0 - 파일 다운로드

HttpServletResponse response = ((ServletExternalContext) context.getExternalContext()).getResponse();

. 파일을 다운로드하고 싶습니다. 다른 말로하면, 저는 다른 주로 전향하고 싶지 않습니다. 난 그냥 동적으로 렌더링 된 파일을 제공하고 싶습니다. 모든 (I 페이지를 떠나지 말아요, 나는 파일을 다운로드)를 작동하지만 난 내 콘솔에서 다음과 같은 오류를 받고 있어요 : 여기

_pEncydKfggPHJo8=org.springframework.webflow.engine.NoMatchingTransitionException: No transition was matched on the event(s) signaled by the [1] action(s) that executed in this action state 'downloadErrorReportAction' of flow 'myFlow'; transitions must be defined to handle action result outcomes -- possible flow configuration error? Note: the eventIds signaled were: 'array<String>[[null]]', while the supported set of transitional criteria for this action state is 'array<TransitionCriteria>[[empty]]' 
    at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:187) 
    at org.springframework.webflow.engine.State.enter(State.java:191) 
    at org.springframework.webflow.engine.Transition.execute(Transition.java:212) 
    at org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107) 
    at org.springframework.webflow.engine.Flow.onEvent(Flow.java:534) 
    Truncated. see log file for complete stacktrace 

내 webflow 설정의 관련 부분이다.

<view-state id="showUploadResults" view="UploadResults3.0"> 
    <render-actions> 
     <action bean="UploadResultsAction" method="transitionToWebflow"/> 
     <action bean="UploadResultsAction" method="setupData"/> 
    </render-actions> 
    <transition on="submit" to="proceed"/> 
    <transition on="downloadErrorReport" to="downloadErrorReportAction"/> 
</view-state> 

<action-state id="downloadErrorReportAction"> 
    <action bean="UploadResultsAction" method="downloadErrorReport" name="downloadErrorReport"/> 
</action-state> 

답변

2

나는 뷰 상태를 정의하고 렌더링 동작을 지정함으로써이를 수행 할 수있었습니다.

<view-state id="downloadErrorReportAction"> 
     <render-actions> 
      <action bean="uploadResultsAction" method="downloadErrorReport" name="downloadErrorReport"/> 
     </render-actions> 
    </view-state> 

다운로드 링크를 클릭하면 다른 상태로 전환되기 때문에 이전 동작에서 동일한 전환을 추가해야했습니다. 그래서 최종 설정은 다음과 같습니다 :

<view-state id="showUploadResults" view="UploadResults3.0"> 
    <render-actions> 
     <action bean="UploadResultsAction" method="transitionToWebflow"/> 
     <action bean="UploadResultsAction" method="setupData"/> 
    </render-actions> 
    <transition on="submit" to="proceed"/> 
    <transition on="downloadErrorReport" to="downloadErrorReportAction"/> 
</view-state> 

<view-state id="downloadErrorReportAction"> 
    <render-actions> 
     <action bean="uploadResultsAction" method="downloadErrorReport" name="downloadErrorReport"/> 
    </render-actions> 
    <transition on="submit" to="proceed"/> 
</view-state> 
+0

누구든지 더 좋은 방법을 알고 있습니다. 이것은 조금 해킹 것 같습니다. – Dave