Struts2有两种类型转化器:

一种局部,一种全局.

如何实现:

第一步:定义转化器

第二部:注册转化器

下面做一个局部类型转化器的实例。

我们在上面一片日志说过有个变量date类型的。只有我们输入格式为yyyy-MM-dd的日期类型才会有效。否则则无效。那么我就需要一个类型转化当输入为yyyy-MM-dd的日期类型也能有效,该怎么做?

这时候我们需要一个自定义的类型转化器。

首先我们定义一个类型转化器

我们的类为:DateTypeChange.java

package com.fish;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

publicclass DateTypeChange extends DefaultTypeConverter{//首先得继承默认转化器类

@Override

public Object convertValue(Map<String, Object> context, Object value,

Class toType) {//第二个参数是你的要转化的数据就是我们下面test.Java的brithday属性的值,第三个参数是你传进来的数的值

SimpleDateFormat format=new  SimpleDateFormat("yyyyMMdd");//创建一个日期类型的排版格式。

try {

if(toType==Date.class){

String[] parm=(String[])value;

return format.parse(parm[0]);

}elseif(toType==String.class){

Date date=(Date)value;

return format.format(date);

}

} catch (Exception e) {

}

returnnull;

}

}

类型转化器书写完毕,接着应该写一个注册文件关联类型转化器和你想转化属性的那个类(这个文件写在转化器的同一个包下)

书写格式:“要转化的属性的类型(不加包名)”+conversion.properties。

文件里面写:brithday=com.fish.DateTypeChange

顺便把其他几个test.Java也写上:

package com.fish;

import java.util.Date;

publicclass Test {

private String name;

private String id;

private Date brithday;

public Date getBrithday() {

returnbrithday;

}

publicvoid setBrithday(Date brithday) {

this.brithday = brithday;

}

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

public String getId() {

returnid;

}

publicvoid setId(String id) {

this.id = id;

}

public String execute(){

return"success";

}

}

接着:Struts2.xml:

<package name="fish" namespace="/test" extends="struts-default">

<action name="redfish" class="com.fish.Test" method="execute">

<param name="name">xxxx</param>

<result  name="success">/index.jsp</result>

</action>

然后:MyJsp.JSP

<form action="/struts2test4/test/redfish.action">&nbsp;

<input type="text"  name="username">

<input type="text" name="id">

<input type="text" name="brithday">

<input type="submit" value="确定">

最后:index.JSP

name=${name}<br>

id= ${id}  <br>

brithday=${brithday}<br>

这时我们在index.JSP页面中输入yyyyMMdd类型的日期类型时,struts2也能转化成日期格式处理了。

当然如果你想写全局转化器。

只要改properties文件:

将他移动到web-inf/classess下,命名是

xwrok-conversion.properties

在里面的内容:

转化的类型(有包名的)=转化器(包名的)

所以是这么写

Java.util.Date=com.fish.DateTypeChange

意思是说对于所有date类型我都可以转化为这种格式处理。

struts2类型转化器详解(带例子)的更多相关文章

  1. 通俗易懂之SpringMVC&Struts2前端拦截器详解

    直接进入主题吧!一,配置Struts2的拦截器分两步走1配置对应的拦截器类:2在配置文件Struts.xml中进行配置拦截器同时在Strust2中配置拦截器类有三种方法1实现Interceptor接口 ...

  2. struts2 18拦截器详解(七)

    ChainingInterceptor 该拦截器处于defaultStack第六的位置,其主要功能是复制值栈(ValueStack)中的所有对象的所有属性到当前正在执行的Action中,如果说Valu ...

  3. struts2 18拦截器详解(九)

    ScopedModelDrivenInterceptor 该拦截器处于defaultStack第八的位置,其主要功能是从指定的作用域内检索相应的model设置到Action中,该类中有三个相关的属性: ...

  4. struts2 18拦截器详解(五)

    I18nInterceptor 该拦截器处理defaultStack第四的位置,是用来方便国际化的,如果说我们的一个Web项目要支持国际化的话,通常的做法是给定一个下拉框列出所支持的语言,当用户选择了 ...

  5. struts2 18拦截器详解(十)

    ModelDrivenInterceptor 该拦截器处于defaultStack中的第九的位置,在ScopedModelDrivenInterceptor拦截器之后,要使该拦截器有效的话,Actio ...

  6. Protocol Buffers编码详解,例子,图解

    Protocol Buffers编码详解,例子,图解 本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计.通过此文你可以了解protobuf的数据压缩能力 ...

  7. Java类加载器详解

    title: Java类加载器详解date: 2015-10-20 18:16:52tags: JVM--- ## JVM三种类型的类加载器- 我们首先看一下JVM预定义的三种类型类加载器,当一个 J ...

  8. JMeter 后置处理器之正则表达式提取器详解

    后置处理器之正则表达式提取器详解   by:授客 QQ:1033553122 1. 添加正则表达式提取器 右键线程组->添加->后置处理器->正则表达式提取器 2. 提取器配置介绍 ...

  9. GLSL-几何着色器详解跟实例(GS:Geometry Shader)[转]

    [OpenGL4.0]GLSL-几何着色器详解和实例(GS:Geometry Shader) 一.什么是几何着色器(GS:Geometry Shader) Input Assembler(IA)从顶点 ...

随机推荐

  1. TCP三次链接和四次断开

    经典的三次握手示意图:(#add,“握手”即图中左边到右边的连线)    经典的四次握手关闭图:    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即t ...

  2. Vim文本编辑命令

    Vim Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.[1]  VIM是自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来 ...

  3. mysql数据库和oracle数据库之间互相导入备份

    把从Oracle数据库导出的数据导入到MySql数据库中1. 使用默认的结束符号导入到MySql数据库中:    LOAD DATA LOCAL INFILE 'd:/oracle.txt' IGNO ...

  4. Spring MVC数据绑定(二)

    之前学习了SpringMVC数据绑定的基本知识和简单数据绑定以及POJO类型数据的绑定.接下来总结剩下的一些数据类型的绑定 1. 绑定包装POJO 所谓的包装POJO,就是在一个POJO中包含另一个简 ...

  5. python开发学习-day09(队列、多路IO阻塞、堡垒机模块、mysql操作模块)

    s12-20160312-day09 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  6. Oracle表空间不足ORA-01654

    v在往数据表里插入数据时,出现了ORA-01654: 索引 SSERVICE.IX_MSI_WDR_INPUT_1 无法通过 1024 (在表空间 USERD 中) 扩展的错误信息,原来是数据量太大, ...

  7. CountDownLatch 使用方法

    CountDownLatch 使用方法 import java.util.concurrent.CountDownLatch; public class TestCountDownLatch { pu ...

  8. es6的Map()构造函数

    普通的object对象是键值对的集合,但对于它的键却有着严苛的要求,必须是字符串,这给我们平时带来很多的不方便 Map函数类似于对象,但它是一个更加完美的简直对集合,键可以是任意类型 set()方法可 ...

  9. VS code配置docker的shell环境

    今天尝试了下使用docker来做虚拟机,几番折腾后终于搞定可以用了,但是想着每次都要在命令行敲半天也太恶心了,所以就找了一下可视化的管理工具 首先说下,我的docker主机环境是windows10,用 ...

  10. 湖南大学ACM程序设计新生杯大赛(同步赛)A - Array

    题目描述 Given an array A with length n  a[1],a[2],...,a[n] where a[i] (1<=i<=n) is positive integ ...