В моем проекте с Struts2 я не использую среду валидации, и никакие методы действий не возвращают «вход» в мой класс Action. Вот мой фрагмент конфигурации,
<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 DEBUG
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.debug:68 - Errors on action com.harris.northstar.dbadesk.action.SearchTrackerAction@1d07b41, returning result name 'input'"
Почему он вызывает DefaultWorkflowInterceptor и возвращает ввод имени результата?
Если я верну результат ввода в конфигурации, исключение пропадет. Но если вначале в Action произойдет ошибка, она не будет снова успешной, даже если я установлю точку останова, после этого метод не перейдет в searchTracker()
.