2011-11-07 25 views
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()

回答

2

這也可能是由類型轉換錯誤引起的;不知道更多關於你送什麼東西,除此之外很難幫助。

如果您刪除「工作流程」攔截器,S2將停止檢查操作中的錯誤。您可能還需要刪除類型轉換攔截器,但工作流應該足夠了。如果你沒有使用任何驗證,你也可以移除攔截器。

+0

感謝戴夫,如何刪除工作流攔截器? – user1006080

+0

@ user1006080您需要定義自己的[攔截器堆棧](http://struts.apache.org/2.x/docs/interceptor-configuration.html)並將其用作默認堆棧。我只是複製'defaultStack'並嘗試首先刪除「工作流程」。 –

+0

然後我必須將此攔截器堆棧添加到我的操作配置中? – user1006080