struts2自定义转换器
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自定义转换器的更多相关文章
- Struts2自定义转换器输入生日日期输出年、月、日、年龄
BirthAction.java package com.action; import java.util.Calendar; import java.util.Map; import com.bea ...
- struts2自定义类型转换器
首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机 ...
- Struts2 请求数据的自动封装 及 自定义转换器类
请求数据自动封装: 实现原理:使用了参数拦截器.struts-default.xml中 <interceptor name="params" class="com. ...
- [JavaWeb基础] 013.Struts2 自定义类型转换器
很多时候,我们在做web开发的时候经常要用到时间的转换器,Struts2给我们提供了一种类型转换器的接口.下面我们讲讲怎么实现吧. 1.首先我们要定义一个类型转换的类,继承自com.babybus.s ...
- Struts2自定义类型转换,和处理类型转换错误
Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...
- struts2参数转换器用法
贴代码 struts的action中接收简单类型参数,struts2可以自动转化,但是复杂类型需要自定义转换器转换 public class ConvertAction extends ActionS ...
- struts2 自定义校验规则
自定义校验规则:(了解) 在Struts2自定义校验规则: 1.实现一个Validator 接口. 2.一般开发中继承ValidatorSupport 或者 FieldValidatorSupport ...
- spring mvc 自定义转换器
<!-- 注册转化器 --> <mvc:annotation-driven conversion-service="conversionService" /> ...
- Struts2自定义拦截器Interceptor以及拦截器登录实例
1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...
随机推荐
- 七牛云图片的存储与处理--基于node
1. 手动上传 . 快速入门,这个简单,可以参考七牛官方文档: https://developer.qiniu.com/kodo/manual/1233/console-quickstart#step ...
- Unity外包 UE4外包 项目案例平台开通通知
长年承接Unity外包 UE4外包,大家好,本公司团队已将案例上传至专门的案例官网. 欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.
- canvas连线特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 音频转化mp3 ,到底选vbr还是cbr
毫无疑问,aac格式是最好的. 其次,应该是 vbr. 参考下面文章 http://tieba.baidu.com/p/1966991568 总结: 1.正版iTunes Plus 256K AAC格 ...
- Java ----> java io / java nio / java net 学习资源汇总
Java IO教程 Java NIO 系列教程 Java网络教程 学习Java基础的一个英文网站:http://tutorials.jenkov.com/ ,上面中文教程来自并发编程网,上面中文教程翻 ...
- 异常:Error resolving template "xxx", template might not exist or might not be accessible...解决办法
在开发环境下正常,但使用jar运行时,报错Error resolving template template might not exist or might not be accessible,意思 ...
- Android 正则表达式实例
editText正则表达式的使用 检查输入是否符合规则 import Android.app.Activity; import android.os.Bundle; import android.vi ...
- python_内置函数
#内置函数 #1.abs 获取绝对值 # abs(-10) # --->10 # # abs(10) # --->10 # # abs(0) # --->0 #2.all() 参数为 ...
- bom头
最近做ecshop经常碰到bom头问题,具体表现用chrome开发工具查看会出现小红点, 具体删除办法见网上,我是用老文件copy再替换内容.
- bash: ./xxx 权限不够
Linux环境下要运行C编译的一个可执行文件play,终端cd到当前目录后输入./play,提示 bash: ./xxx 权限不够 用sudo, 提示 sudo:./play: command no ...