一、类型转化错误时,如何处理?
若Action类没有实现ValidationAware接口,在类型转化错误时,struts2会继续调用action方法,将该属性值置为默认值,不报错。
若Action类实现了ValidationAware接口,在类型转化错误时,struts2会检查当前<action>是否配置了<result name="input">……</result>,若配置了,将控制权交给该<result>;若没有配置,报错:No result defined for action …… and result input。
二、如何显示类型转化失败时的错误消息?
若form标签使用的是默认的主题(xhtml),则自动显示错误消息,默认的错误消息是:Invalid field value for field ……
若form标签使用的是simple主题,使用<s:fielderror>标签显示。例如:<s:fielderror fieldName="name"/>
三、默认的错误消息是如何显示的?
如果当前Action类实现了ValidationAware接口,conversionError拦截器(默认拦截器栈的一员)负责添加与类型转化相关的错误消息。
四、如何覆盖、定制默认的错误消息
在当前字段的model所在的包下新建一个文件,文件名:字段所在类的类名.properties
在该新建的文件中输入键值对,如下
invalid.fieldvalue.表单中相应字段的name属性的值=定制的错误消息
五、自定义类型转化器
1.为什么要自定义?
params拦截器只能完成基本数据类型和字符串之间的类型转化,不能完成字符串和引用类型之间的转换。
例如:字符串和日期之间的转化
2.如何自定义?
(1)开发一个类,继承StrutsTypeConverter
(2)配置(两种方式)
①基于字段的配置(只能处理当前字段的类型装换异常)
在字段所在的model所在的包下新建一个文件,文件名:字段所在类的类名-conversion.properties
在该新建文件中输入键值对,如下
待转换的字段名=自定义类型转换器的全类名
基于字段配置的自定义类型转化器在第一次使用时创建实例,并且仅创建一次(单例)
②基于类型的配置(可以处理当前类型的所有字段的转换异常)
在类路径下新建一个文件,文件名:xwork-conversion.properties
在该新建文件中输入键值对,如下
带转换类型的全类名=自定义类型转换器的全类名
基于类型配置的自定义类型转化器在当前web应用被加载时创建。
相关文章
- 10-17SQL零星技术点:SQL中转换money类型数值转换为字符串问题
- 10-17在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。
- 10-17Android Bitmap相关知识点——类型、创建、压缩、转换等
- 10-17c++中4个与类型转换相关的关键字分析
- 10-17类型转换常见问题
- 10-17varchar类型转换为numeric的值时有问题原因
- 10-17delphi 10.1 berlin datasnap提交clientdataset.delta报:invalid variant type conversion(类型转换错误)问题的解决
- 10-17彻底解决Spring mvc中时间类型的转换和序列化问题
- 10-17关于python各种值得问题,及其值得类型转换和检查。
- 10-17C++与类型转换相关的四个关键字及其特点