struts2类型转化相关问题
Posted dddjp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2类型转化相关问题相关的知识,希望对你有一定的参考价值。
一、类型转化错误时,如何处理?
若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应用被加载时创建。
以上是关于struts2类型转化相关问题的主要内容,如果未能解决你的问题,请参考以下文章