struts2验证框架需要结果输入

时间:2011-11-07 05:01:36

标签: validation input struts

在我的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()

1 个答案:

答案 0 :(得分:2)

这也可能是由类型转换错误引起的;如果你不了解更多关于你发送的内容的信息,除此之外很难提供帮助。

如果删除“workflow”拦截器,S2将停止检查操作上的错误。您可能还需要删除类型转换拦截器,但工作流程应该足够了。如果你没有使用任何验证,你也可以删除那个拦截器。