类型转换器是将浏览器传递的参数进行转换为了与服务器端的参数匹配,先举个例子如果我们想往服务器传递日期类型的参数时我们要怎么让浏览器传过去的让服务器明白

我们新建一个类 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入门学习(三)---自定义类型转换器的更多相关文章

  1. mybatis入门系列三之类型转换器

    mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名, ...

  2. Struts(二十):自定义类型转换器

    如何自定义类型转换器: 1)为什么需要自定义类型转化器?strtuts2不能自动完成字符串到所有的类型: 2) 如何定义类型转化器? 步骤一:创建自定义类型转化器的类,并继承org.apache.st ...

  3. Struts2框架的自定义类型转换器

    前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...

  4. struts2基础---->自定义类型转换器

    这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器

  5. [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器

    之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...

  7. sruts2 自定义类型转换器

    1.1.1    Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP ...

  8. 自定义类型转换器converter

    作用:目前将日期转换成string,将string转换成我想要的类型   0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时  表单数据以字符串的形式提交 ...

  9. struts2自定义类型转换器

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

随机推荐

  1. [Q]关于不同比例、不同纸张大小图纸的批量打印

    不同比例或不同纸张大小的图纸可以一起批量打印,但目前打图精灵不能自动识别纸张大小,纸张大小是手动指定的,且只能指定一种纸张大小,但设置打印比例为“缩放到可打印区域”或“缩放到纸张边界”仍然可以将不同比 ...

  2. VS2010下调试.NET源码

    微软走向开源,是时候用vs去单步调试进入源码了.参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182 可供参考的文章:https:// ...

  3. IQueryable 和 IEnumerable

    IQueryable 和 IEnumerable 其实,对于上面的即有过虑又有排序的条件查询Linq语句,EF是读取数据库中整个Books表中的数据到内存,还是根据Linq查询语句智能的生成SQL再执 ...

  4. 问题: 在使用thinkphp自带分页类时,在设置尾页显示的最后一页时,用setConfig(“last”,”尾页”)来设置样式,发现无效。

    分析: 在分页类(/ThinkPHP/Library/Think/Page.class.PHP)里面有一个共有属性: public $lastSuffix = true; // 最后一页是否显示总页数 ...

  5. PHPStorm 安装 SASS、SCSS + Compass

    许久没更新博客啦,这两天研究了下 SASS 和 LESS ,最终选了 SASS,因为相对比较成熟些吧,试了很多坑之后,终于成功了,下面上步骤: 1. 安装 PHPStorm 的 SASS 插件 好像是 ...

  6. Payload Inject And Fake

    常见捆绑注入payload手法 Payload捆绑注入 注入exe型+编码: msfvenom -a <arch> --plateform <platform> -p < ...

  7. haproxy(1)

    参考文档: http://cbonte.github.io/haproxy-dconv/1.5/configuration.html 一.Haproxy 软件负载均衡一般通过两种方式来实现:基于操作系 ...

  8. gvim窗口根据gnome-terminal位置定位

    gvim启动位置固定的话容易挡到东西,所以写了一段vimscript根据gnome-terminal的位置启动gvim,这样被遮住的概率就一些了. fun! g:get_xterm_pos ()&qu ...

  9. java中float和double的区别

    float表示单精度浮点数在机内占4个字节,用32位二进制描述. double表示双精度浮点数在机内占8个字节,用64位二进制描述.浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分. ...

  10. 3.Thread中的静态方法

    1.currentThread() public class Thread14 extends Thread{ static { System.out.println("静态块的打印:&qu ...