Struts2整理-----Struts2类型转换
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器
局部类型转换
提供如下格式的文件
文件名:ActionName-conversion.properties
内容:多个propertyName(属性名)=类型转换器类(含包名),如 date=com.aumy.DateConverter
存放位置:和ActionName类相同路径。
开发步骤(这里以Action中Date类型数据为例):
step1.
首先编写一个转换类Converter1Action.java(继承DefaultTypeConverter),然后覆盖convertValue这个方法。
package com.aaron.converter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class DateTypeConverter extends DefaultTypeConverter { @Override public Object convertValue(Map arg0, Object value, Class toType) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); try { if (toType == Date.class) {// 当字符串向Date类型转换时 String[] params = (String[]) value;// Request.getParameterValues() return dateFormat.parse(params[0]); } else if (toType == String.class) {// 当Date转换成字符串时 Date date = (Date) value; return dateFormat.format(date); } } catch (java.text.ParseException e) { e.printStackTrace(); } return null; } }
convertValue方法用于String类型数据转成自定义类型的处理方法
参数: arg0---与Action有关的上下文信息
value ---从请求中获取的参数值
toType ---要转换的目标类型
step2.
编写action
package com.aaron.action; import java.util.Date; import com.aaron.model.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Converter1Action extends ActionSupport { private Date birthday; public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { System.out.println("birthday=="+birthday); this.birthday = birthday; } public String excute() { ActionContext.getContext().getSession().put("birthday", birthday); return SUCCESS; } }
step3.
在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法
如:Converter1Action-conversion.properties
Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)
birthday=com.aaron.converter.DateTypeConverter
全局类型转换
提供如下格式的文件
文件名:xwork-conversion.properties
内容:多个“复合类型=对应类型转换器”项组成,如 java.Util.Date=com.aaron.conveterDateTypeConverter
存放位置:src根目录下。
开发步骤:
如果业务需求所有的日期都要转换,则可以使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,并且properties文件中的内容为: 待转换的类型=类型转换器的全类名
java.util.Date=com.aaron.conveterDateTypeConverter