Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts 2工作流拦截器和没有输入结果的操作_Java_Struts2_Workflow_Struts2 Interceptors - Fatal编程技术网

Java Struts 2工作流拦截器和没有输入结果的操作

Java Struts 2工作流拦截器和没有输入结果的操作,java,struts2,workflow,struts2-interceptors,Java,Struts2,Workflow,Struts2 Interceptors,如果我理解Struts2拦截器堆栈正确,工作流拦截器将查看验证拦截器是否报告了任何验证失败。如果发现验证失败,则返回(默认)Action.INPUT 如果是这种情况,那么如果正在执行的操作在其struts.xml配置中没有定义INPUT结果,会发生什么情况?如果它返回INPUT,并且没有为其定义结果(也没有一般结果),您将得到一个错误页面,上面写着 No result defined for type INPUT and action <action name>. 没有为类型输入

如果我理解Struts2拦截器堆栈正确,工作流拦截器将查看验证拦截器是否报告了任何验证失败。如果发现验证失败,则返回(默认)
Action.INPUT


如果是这种情况,那么如果正在执行的操作在其
struts.xml
配置中没有定义
INPUT
结果,会发生什么情况?

如果它返回INPUT,并且没有为其定义结果(也没有一般结果),您将得到一个错误页面,上面写着

 No result defined for type INPUT and action <action name>.
没有为类型输入和操作定义结果。

您可以定义一个始终显示“INPUT”的常规页面,但更好的解决方案是,如果您有一个validate()方法,通常最好定义一个返回的输入结果。即使您没有显式地执行任何验证,像传递给整型字段的非整数值之类的事情也会导致该结果,因此最好对其进行定义。

默认情况下使用输入
结果,您始终可以通过将参数设置为interceptor
inputResultName
来覆盖它

<interceptor-ref name="workflow">
   <param name="inputResultName">error</param>
</interceptor-ref>

错误
进一步澄清和提及


在上面的示例中,操作没有
输入
结果,如果发现操作错误或字段错误,则返回结果
错误

您可以使用
验证工作流感知
接口定义每个操作的结果名称

您可以使用
InputConfig
annotation以编程方式更改每个操作的结果名称


随着Struts 2.3.15新版本的发布,还可以使用
ValidationErrorWare
接口,可以通知操作错误并更改返回的结果名称:

这似乎很容易通过尝试来确定,但很明显,您会收到一个错误,说结果未定义。全局结果可能有助于捕获这些错误,并至少呈现用户可以理解的内容,但如果发生这种情况,则是开发级别的错误。