由于类型转换过程中有可能出现原始参数无法转换为目标类型的错误,所以struts2提供了类型转换中的异常处理机制。
在struts2的默认配置文件struts-default.xml中有如下一段配置代码
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="conversionError"></interceptor-ref>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
该拦截器负责将对应错误封装成表单域错误(FieldError),并将这些错误信息放入ActionContext中。然后系统会跳转到名为input的逻辑视图。如果struts的配置文件中配置了该逻辑视图指向的物理视图,就跳转入对应的物理视图,如没有配置,则根据约定跳转入/WEB-INF/content/input.jsp。在input.jsp中使用struts2的标签<s:fielderror/>则可以在页面上输出错误信息。
1.默认情况下,输出内容:Invalid field value for field 属性名
在国际化资源文件中增加
xwork.default.invalid.fieldvalue=[0]字段类型转换失败!
则可以将默认提示修改为“=”后面的内容。
2.在某些时候,可能还需要对特定字段指定特定提示信息,则可通过ActionName.properties局部资源文件实现,在文件中增加
invalid.fieldvalue.<propName>=<tipMsg>
例如:invalid.fieldvalue.user.age=年龄必须是数字!
则在年龄字段转换失败时提示“=”后面的内容