博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2类型转换器
阅读量:4079 次
发布时间:2019-05-25

本文共 3181 字,大约阅读时间需要 10 分钟。

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

(1)局部类型转换器 

如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。

以下为局部类型转换器的开发步骤

a.首先要写一个类来继承DefaultTypeConverter
b.然后覆盖convertValue这个方法,在里面进行数据转型 
c.在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法, 
如:HelloWorldAction-conversion.properties

d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)

如:birthday=com.ljq.type.converter.DateTypeConverter

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

               

               

代码

Action类

package com.ljq.action;import java.util.Date;public class HelloWorldAction {	// 日期	private Date birthday;	// 枚举	private Gender gender;	public String execute() {		return "success";	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		System.out.println("birthday=" + birthday);		this.birthday = birthday;	}	// 自定义枚举	public enum Gender {		MAN, WOMEN	}	public Gender getGender() {		return gender;	}	public void setGender(Gender gender) {		System.out.println("gender=" + gender);		this.gender = gender;	}}
     

日期类型转换器

package com.ljq.type.converter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;/** * 日期自定义类型转换器 * @author sigangjun */public class DateTypeConverter extends DefaultTypeConverter {	@SuppressWarnings("unchecked")	@Override	public Object convertValue(Map
context, Object value, Class toType) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); try { if (toType == Date.class) { // 当字符串向Date类型转换时 String[] params = (String[]) value; return sdf.parseObject(params[0]); } else if (toType == String.class) { // 当Date转换成字符串时 Date date = (Date) value; return sdf.format(date); } } catch (java.text.ParseException e) { e.printStackTrace(); } return null; }}

枚举类型转换器

package com.ljq.type.converter;import java.util.Map;import com.ljq.action.HelloWorldAction.Gender;import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;/** * 枚举自定义类型转换器 *  * @author sigangjun *  */public class GenderTypeConverter extends DefaultTypeConverter {	@Override	public Object convertValue(Map
context, Object value, Class toType) { if (toType == Gender.class) { // 当字符串向Gender类型转换时 String[] params = (String[]) value; return Gender.valueOf(params[0]); } else if (toType == String.class) { // 当Gender转换成字符串时 Gender gender = (Gender) value; return gender.toString(); } return null; }}

配置类型转换器

测试路径
日期
http:
//
localhost:8083/struts2/control/employee/list_execute.do?birthday=20110315 23:34:55
枚举
http:
//
localhost:8083/struts2/control/employee/list_execute.do?gender=WOMEN
局部类型转换器: HelloWorldAction
-
conversion.properties
birthday
=
com.ljq.type.converter.DateTypeConverter
gender
=
com.ljq.type.converter.GenderTypeConverter
全局类型转换器: xwork
-
conversion.properties
java.util.Date
=
com.ljq.type.converter.DateTypeConverter

      

在页面打印日期和枚举的值

  birthday=${birthday }

  gender=${gender }

转载地址:http://mdnni.baihongyu.com/

你可能感兴趣的文章
【leetcode】Sum Root to leaf Numbers
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
selenium学习资料
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
layui插件的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
为什么很多程序员都选择跳槽?
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>