2
在我使用struts2的項目中,我沒有使用驗證框架,也沒有任何操作方法在我的Action類中返回「輸入」。這裏是我的配置片段,struts2驗證框架需要結果輸入
<action name="searchTracker" class="searchAction" method="searchTracker">
<result name="success">/jsp/searchTracker.jsp</result>
<result name="error">/jsp/searchTracker.jsp</result>
<result name="input">/jsp/searchTracker.jsp</result>
</action>
這裏是動作類
public String searchTracker(){
this.clearErrorsAndMessages();
List<File> files = fileManager.retrieveFiles(patchNumBySearch);
if(files == null){
this.setTrackers(null);
addActionError("This patch number doesn't exist. Please choose another one !");
return ERROR;
} else {
if (files.size() == 0) {
addActionError("This patch doesn't include any tracker. Please create tracker or choose another patch");
return ERROR;
}
else {
List<Tracker> trackers = commonUtils.convertToTrackers(files);
this.setTrackers(trackers);
}
}
return SUCCESS;
}
如果我刪除輸入的結果,它會拋出異常,這樣
"No result defined for action SearchTrackerAction and result input"
,如果我回來檢查結束日誌,它顯示 「2011-11-07 00:09:13,841調試
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.debug:68 - Errors on action [email protected], returning result name 'input'"
爲什麼它調用DefaultWorkflowInterceptor並返回結果名稱輸入?
如果我將輸入結果放回配置中,則異常消失。但是如果Action首先出錯,即使我設置了中斷點也不會再次成功,那麼之後就不會進入該方法searchTracker()
。
感謝戴夫,如何刪除工作流攔截器? – user1006080
@ user1006080您需要定義自己的[攔截器堆棧](http://struts.apache.org/2.x/docs/interceptor-configuration.html)並將其用作默認堆棧。我只是複製'defaultStack'並嘗試首先刪除「工作流程」。 –
然後我必須將此攔截器堆棧添加到我的操作配置中 ? –
user1006080