struts笔记 类型转换

struts2的类型转换,对于8个原生数据类型以及Date,String 等常见类型,struts2能够使用内建的类型转换器实现自动的转换,对于自定义的对象类型转换来讲,就须要咱们制定转换类型以知足须要。
java


Struts2自定义类型转换器分为局部类型转换器和全局类型转换器spa


(1)局部类型转换器 
code

1.首先要写一个类来继承DefaultTypeConverter 
2.而后覆盖convertValue这个方法,在里面进行数据转型 ,后面详细说明convertValue里面转换方法。
3.在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法,
orm

4.Properties文件里面的内容为:属性名称=类型转换器的全类名对象

如  继承

user=com.strutsdemo.UserConverter字符串

小结:源码

对于自定义类型转换器来讲须要提供3个信息,Action的名字(ActionClassName),Action中待转换的属性名以及该属性对应类型转换器。其中,Action的名字是经过属性文件properties 的文件名来得到的,Action的待转换的属性名是经过properties中的key来得到,该属性对应的类型转换器是经过该key对应的value来得到的。io


第2步中class

覆盖convertValue方法里

必须采用if  else if 判断类型,这里以转换经典User为例

public Object convertValue(Map context,Object[] value,Class toTpye){
    if(User.class == toType){         //从页面向后台转换,这里 ==,equals均可以
        //task code
    }else if(String.class == toType){ //从后台向页面转换后,输出值
        //task code 
    }
}

if 判断中, value是表单提交的值

else if 判断中,value是后台到页面须要转换的值


也能够使用struts自带的类型转换器strutsTypeConverter简化类型代码的编写,strutsTypeConverter继承于DefaultTypeConverter父类,而且提供2个抽象方法

convertFromStirng与converToString,分别表示从页面的字符串转换为后台对象以及从后台对象转换为页面的字符串,不须要再判断方向。

顺便提一下strutsTypeConverter源码中,依然是if else if 判断方向。


批量转换

表单中提交相同name的值,能够用批量转换

转换方法中都是String value[]就是能够根据因此取到相同name提交的值。

其余同理


(2)全局类型转换器 
若是业务需求全部的日期都要转换,则能够使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,而且properties文件中的内容为: 
待转换的类型=类型转换器的全类名 
如:java.util.Date = com.type.Converter.DateTypeConverter 便可 

相关文章
相关标签/搜索