在我的struts2项目中,我不使用验证框架,并且没有动作方法在我的Action类中返回“input”。这是我的配置代码段
<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()
。
答案 0 :(得分:2)
这也可能是由类型转换错误引起的;如果你不了解更多关于你发送的内容的信息,除此之外很难提供帮助。
如果删除“workflow”拦截器,S2将停止检查操作上的错误。您可能还需要删除类型转换拦截器,但工作流程应该足够了。如果你没有使用任何验证,你也可以删除那个拦截器。