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

本文共 3086 字,大约阅读时间需要 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 jiqinlin**/public class DateTypeConverter extends DefaultTypeConverter {@SuppressWarnings("unchecked")@Overridepublic 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 jiqinlin**/public class GenderTypeConverter extends DefaultTypeConverter{@Overridepublic 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.propertiesbirthday=com.ljq.type.converter.DateTypeConvertergender=com.ljq.type.converter.GenderTypeConverter全局类型转换器: xwork-conversion.propertiesjava.util.Date=com.ljq.type.converter.DateTypeConverter

 

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

  birthday=${birthday }

  gender=${gender }

转载于:https://www.cnblogs.com/lomomiao/p/4163871.html

你可能感兴趣的文章
github 在ubuntu 使用--常用命令
查看>>
hl7 V2中Message Control ID的含义及应用
查看>>
IOS 4个容易混淆的属性(textAligment contentVerticalAlignment contentHorizontalAlignment contentMode)...
查看>>
iOS 修改textholder的颜色
查看>>
【资料】wod地城掉落
查看>>
C# FTPHelper(搬运)
查看>>
C#HttpHelper类1.3正式版教程与升级报告
查看>>
【转】Android 语言切换过程分析
查看>>
jpa 多对多关系的实现注解形式
查看>>
Android开发——View绘制过程源码解析(一)
查看>>
Quartz和TopShelf Windows服务作业调度
查看>>
让ie9之前的版本支持canvas
查看>>
排序规则
查看>>
percent的用法
查看>>
中文词频统计
查看>>
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
html5特征检测
查看>>
js中几种实用的跨域方法原理详解
查看>>
打印图形
查看>>