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. js原型和原型链理解到面向对象

    一.js中的两种对象,普通对象和函数对象 var obj1 = {}; var obj2 =new Object(); var obj3 = new obj1(); function fun1(){} ...

  2. aop(权限控制)

    创建sysContext (管理请求) package com.tp.soft.common.util; import javax.servlet.http.HttpServletRequest; i ...

  3. vjson.hpp

    //vov #ifndef VJSON_HPP #define VJSON_HPP #include <iostream> #include <string> #include ...

  4. tensorbordX使用

    安装: pip install tensorflow-1.7.0 pip install tensorbord pip install tensorbordX 启动 tensorboard --log ...

  5. 2>&1 什么意思

    1.  0 表示stdin标准输入 2.  1 表示stdout标准输出 3.   2表示stderr标准错误 意思是:把标准错误重定向到标准输出?

  6. Educational Codeforces Round 5F. Expensive Strings

    题意:给n个串ti,ps,i是s在ti中出现的次数,要求找到s,使得\(\sum_{i=1}^nc_i*p_{s,i}*|s|\)最大 题解:sam裸题,每次插入时相当于在fail链上到1的位置加ci ...

  7. wpf 实现 css3 中 boxshadow inset 效果

    using System; using System.Linq; using System.Windows; using System.Windows.Controls; using System.W ...

  8. linux 7 关闭防火墙 开启sshd服务

    启动一个服务:systemctl start firewalld.service关闭一个服务:systemctl stop firewalld.service重启一个服务:systemctl rest ...

  9. mac系统vscode环境配置,以及iTerm2配置Zsh + on-my-zsh shell

    https://segmentfault.com/a/1190000013612471?utm_source=tag-newest https://ohmyz.sh/ 一:安装iTerm2终端 htt ...

  10. 博客编辑器Open Live Writer的安装以及配置

    下载安装包 访问官网  http://openlivewriter.org/ 或者微软商店  https://www.microsoft.com/en-us/p/open-live-writer/9n ...