2010-06-16 87 views
3

我使用的是spring webflow 1.0。我正在上傳一個csv文件,解析它,然後在繼續之前對結果進行標記。用戶可以選擇下載包含未通過驗證的記錄的csv文件。當我單擊JSP中的鏈接下載此文件時,webflow會調用表單Action。表單操作通過獲取輸出流關閉響應寫入一個文件:Spring webflow 1.0 - 下載文件

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

我不想離開JSP我目前。我只想下載文件。換句話說,我不想過渡到另一個國家。我只想提供動態呈現的文件。一切工作(我不離開頁面,我下載的文件),但我發現了以下錯誤在我的控制檯:

_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 2010-06-17 19:33:10