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

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

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

a.首先要写一个类来继承StrutsTypeConverter

b.然后覆盖convertFromString(),convertToString()这个方法,在里面进行数据转型

c.在action类所在的包下放置ConversionAction-conversion.properties文件,ConversionAction是类名,后面的-conversion.properties是固定的写法, 
如:ConversionAction-conversion.properties

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

如:date=cn.happy.conversion.DateConversion

创建ConversionAction类

public class ConversionAction extends ActionSupport {
private Date date; @Override
public String execute() throws Exception {
return SUCCESS;
} public Date getDate() {
return date;
} public void setDate(Date date) {
this.date = date;
}

编写自定义转换器代码

public class DateConversion extends StrutsTypeConverter {
private static final List<SimpleDateFormat> list=new ArrayList<SimpleDateFormat>();
static {
list.add(new SimpleDateFormat("yyyy-MM-dd"));
list.add(new SimpleDateFormat("yyyy年MM月dd日"));
list.add(new SimpleDateFormat("yyyy/MM/dd"));
list.add(new SimpleDateFormat("yyyy.MM.dd"));
}
public Object convertFromString(Map map, String[] strings, Class aClass) {
//获取日期的字符串
String date=strings[];
for(SimpleDateFormat item:list){
try {
//把String类型转为Date
Date parse = item.parse(date);
return parse;
} catch (ParseException e) {
continue;
}
}
//如果遍历完毕后扔没有转换成功,表明出现转换异常
throw new TypeConversionException();
} public String convertToString(Map map, Object obj) {
Date date=(Date)obj;
//输出格式
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
}

jsp页面代码

 <form action="conversion" method="post">
日期<input name="date">
<input type="submit" value="提交">
</form>

struts.xml配置

 <action name="conversion" class="cn.happy.action.ConversionAction" >
<!--转换失败,进入login.jsp页面-->
<result name="input">login.jsp</result>
<result name="success">sucess.jsp</result>
</action>

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

java.util.Date=cn.happy.conversion.DateConversion

struts2自定义转换器的更多相关文章

  1. Struts2自定义转换器输入生日日期输出年、月、日、年龄

    BirthAction.java package com.action; import java.util.Calendar; import java.util.Map; import com.bea ...

  2. struts2自定义类型转换器

    首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机 ...

  3. Struts2 请求数据的自动封装 及 自定义转换器类

    请求数据自动封装: 实现原理:使用了参数拦截器.struts-default.xml中 <interceptor name="params" class="com. ...

  4. [JavaWeb基础] 013.Struts2 自定义类型转换器

    很多时候,我们在做web开发的时候经常要用到时间的转换器,Struts2给我们提供了一种类型转换器的接口.下面我们讲讲怎么实现吧. 1.首先我们要定义一个类型转换的类,继承自com.babybus.s ...

  5. Struts2自定义类型转换,和处理类型转换错误

    Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...

  6. struts2参数转换器用法

    贴代码 struts的action中接收简单类型参数,struts2可以自动转化,但是复杂类型需要自定义转换器转换 public class ConvertAction extends ActionS ...

  7. struts2 自定义校验规则

    自定义校验规则:(了解) 在Struts2自定义校验规则: 1.实现一个Validator 接口. 2.一般开发中继承ValidatorSupport 或者 FieldValidatorSupport ...

  8. spring mvc 自定义转换器

    <!-- 注册转化器 --> <mvc:annotation-driven conversion-service="conversionService" /> ...

  9. Struts2自定义拦截器Interceptor以及拦截器登录实例

    1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...

随机推荐

  1. java在window下用cmd (javac、jar)命令行模拟Intellij IDEA软件生成jar包

    @@首先最重要的cmd命令: javac ,jar :使用如下(注意[.]不要输错): 1. javac编译: D:\MyWorkSet\idea_hadoop>javac -d .\out\p ...

  2. 全景拍摄,全景视频拍摄,全景VR拍摄,VR全景拍摄,360全景图片拍摄

    北京动软专业提供基于手机.VR设备.PC浏览器的全景拍摄和项目展示服务. 承接服务内容包括720°全景拍摄展示.VR虚拟现实全景.全景漫游.全景视频.物体全景.环物全景等.   全景展示主要应用于展览 ...

  3. python函数注释,参数后面加冒号:,函数后面的箭头→是什么?

    https://blog.csdn.net/sunt2018/article/details/83022493

  4. nginx的前世今生

    Nginx最初的设计是称为一个http服务器,一个能够解决C10K问题的http服务器. 那么问题来了,什么是C10K呢?C10K问题即(单机10万个并发链接问题),这个概念最早是由Dan Kegel ...

  5. 使用querybuilder做忽略大小写查询的例子

    自定义Predicate: import com.day.cq.search.Predicate; import com.day.cq.search.eval.AbstractPredicateEva ...

  6. mysql 重点性能测试指标

    #qps 每秒钟查询数量 计算方式queries/seconds 查询总数/秒数show GLOBAL STATUS LIKE 'question%' #tps 每秒事务数 计算方式 (com_com ...

  7. IDEA常用操作

    ctrl+tab:切换不同的tab Ctrl+D:比较两个目录或文件(先选中) Alt+斜杠 :智能感知提示单词 Ctrl+K :版本修改记录 Alt+Enter:正则检查 Ctrl+Alt+B:查找 ...

  8. 控制dom 加载成功后事件

  9. idea 本地tomcat启动控制台乱码问题

    问题:本地tomcat启动,控制台出现中文乱码: 解决办法: 安装了idea发现启动tomcat的时候控制台会有乱码问题,在tomcat配置中添加在VM options填写-Dfile.encodin ...

  10. 调试内核打印debugfs

    新年第一天更博.这么勤劳我一定是小仙女`_>` 前几天调试时候,因为处理速度问题,师父给的建议是把应用中不重要的打印删掉.内核中也不要直接用printk,可以把想查看的数据通过debugfs来查 ...