Struts入门学习(三)---自定义类型转换器
类型转换器是将浏览器传递的参数进行转换为了与服务器端的参数匹配,先举个例子如果我们想往服务器传递日期类型的参数时我们要怎么让浏览器传过去的让服务器明白
我们新建一个类 ConverterTest.java
package com.day03;
import java.util.Date;
public class ConverterTest {
private Date birthday;
private String bir;
public void setBirthday(Date birthday){
this.birthday = birthday;
}
public Date getBirthday(){
return this.birthday;
}
public String execute(){
return "success";
}
}
然后我们在/WEB-INF/page/birthday.jsp 这里只需要<body><center><h1>${bir}</h1></center></body>这样就能在页面显示数据
最后在struts.xml中配置action
<action name="birthday" class="com.day03.ConverterTest">
<result>/WEB-INF/page/birthday.jsp</result>
</action>
我们直接访问http://localhost/Struts/day03/birthday.do?birthday=2012-02-27时显示服务器能解析2012-02-27

那么我们用的不是2012-02-27 而是 20120227 呢

什么都没有,现在我们来用自定义转换器转换 让服务器能识别20120227
首先格式转换器分为局部的和全局的
局部类型转换器
首先我们新建转换器类MyConverter.java

必须继承上面的类 第一个和第二个 我试了试 都好使 反正继承DefaultTypeConverter类
然后重写方法

@Override
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
// TODO Auto-generated method stub
return super.convertValue(context, value, toType);
}
value是浏览器传递的数据toType是待转换的类型 这里是Date.class
然后在函数中实现相关的转换
@Override
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); //创建日期转换对象
String[] birthday = (String[]) value; //将浏览器传递的数据转换成字符串数组
Date date = new Date();
try {
date = sdf.parse(birthday[0]); //将字符串数组的第一个数字转换成日期类型
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
上面讲浏览器传递的数据转换成字符串数组是因为struts传递的数据是通过数组的形式传递,因为可能有些参数时同名的一个名字有好几个值所以先转换成字符数组
下面我们在ConterverTest.java的包下创建配置文件
名字必须是 需要转换的类名-conversion.properties 这里是conterverTest-conversion.properties;
里面的格式是
需要转换的字段 = 类型转换器的绝对路径
这里是birthday = com.day04.Converter

细心的读者可以看到上面的url和以前的不,是因为昨天struts的问题调了一天也没有调出来 今天重新做的一个 但是步骤代码是一样的
下面我们来看看全局的类型转换器 首先删除配置文件ConverterTest-conversion.properties
然后在src下创建配置文件 xwork-conversion.properties里面这样配置
java.util.Date = com.day04.Converter

还是好使 的
Struts入门学习(三)---自定义类型转换器的更多相关文章
- mybatis入门系列三之类型转换器
mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名, ...
- Struts(二十):自定义类型转换器
如何自定义类型转换器: 1)为什么需要自定义类型转化器?strtuts2不能自动完成字符串到所有的类型: 2) 如何定义类型转化器? 步骤一:创建自定义类型转化器的类,并继承org.apache.st ...
- Struts2框架的自定义类型转换器
前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...
- struts2基础---->自定义类型转换器
这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器
- [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器
之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...
- sruts2 自定义类型转换器
1.1.1 Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP ...
- 自定义类型转换器converter
作用:目前将日期转换成string,将string转换成我想要的类型 0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时 表单数据以字符串的形式提交 ...
- struts2自定义类型转换器
首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机 ...
随机推荐
- pack://application:,,,/
FrameworkElementFactory gridFactory = new FrameworkElementFactory(typeof(Grid)); gridFactory.SetValu ...
- [Android]Android SDk Manager中创建模拟器无法选择CPU问题解析
方法一.正常下载所需sdk包 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Setti ...
- hibernate事务控制
在使用ssh中将事务委托给spring时老是出现事务不可用 经过检查,原因如下: 是因为在hibernate.cfg.xml文件中忘记进行了如下设置: hibernate.current_sessio ...
- ViewPager和View的事件响应规则
案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...
- jetbrain phpstorm 增加或删除一个 live template
打开\.PhpStorm2016.2\config\templates 将xml文件放入该文件夹中 重启! 单独: setting -> editor -> Live Template +
- Django之模型管理器filter处理问题
今天上班第一天,恭祝所有朋友新年快乐!! 最近在github上发现一个还不错的基于Django的开源博客项目,不过也许是版本原因,其中代码存在着些许问题,今天主要记录下其中的模型处理方法的部分. 这段 ...
- CodeForces 546D
Description 两个士兵在玩一个游戏,开始的时候第一个士兵选择一个数n,并把这个数交给第二个士兵,第二个士兵必须选择一个x满足x>1 且n能被x整除,然后将n变为n/x,然后把这个数交给 ...
- 负载均衡lvs_dr_tcp_http单调度
准备三台虚拟,均为CentOS6.5 x86_64注意,配置过程中,保持端口的一致性.director (eth0 192.168.1.189, vip eth0:0: 192.168.1.18) D ...
- 注册 Gmail,验证手机号码的时候提示“此号码不能用于验证”,怎么解决?
地址:https://www.zhihu.com/question/34834773 刚刚注册成功.折腾了好久,最后换了Chrome浏览器就成功了.手机号在注册的第一个界面时就填+86 xxxxx ...
- HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力)
HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=59 ...