struts2类型转化器详解(带例子)
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">
<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类型转化器详解(带例子)的更多相关文章
- 通俗易懂之SpringMVC&Struts2前端拦截器详解
直接进入主题吧!一,配置Struts2的拦截器分两步走1配置对应的拦截器类:2在配置文件Struts.xml中进行配置拦截器同时在Strust2中配置拦截器类有三种方法1实现Interceptor接口 ...
- struts2 18拦截器详解(七)
ChainingInterceptor 该拦截器处于defaultStack第六的位置,其主要功能是复制值栈(ValueStack)中的所有对象的所有属性到当前正在执行的Action中,如果说Valu ...
- struts2 18拦截器详解(九)
ScopedModelDrivenInterceptor 该拦截器处于defaultStack第八的位置,其主要功能是从指定的作用域内检索相应的model设置到Action中,该类中有三个相关的属性: ...
- struts2 18拦截器详解(五)
I18nInterceptor 该拦截器处理defaultStack第四的位置,是用来方便国际化的,如果说我们的一个Web项目要支持国际化的话,通常的做法是给定一个下拉框列出所支持的语言,当用户选择了 ...
- struts2 18拦截器详解(十)
ModelDrivenInterceptor 该拦截器处于defaultStack中的第九的位置,在ScopedModelDrivenInterceptor拦截器之后,要使该拦截器有效的话,Actio ...
- Protocol Buffers编码详解,例子,图解
Protocol Buffers编码详解,例子,图解 本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计.通过此文你可以了解protobuf的数据压缩能力 ...
- Java类加载器详解
title: Java类加载器详解date: 2015-10-20 18:16:52tags: JVM--- ## JVM三种类型的类加载器- 我们首先看一下JVM预定义的三种类型类加载器,当一个 J ...
- JMeter 后置处理器之正则表达式提取器详解
后置处理器之正则表达式提取器详解 by:授客 QQ:1033553122 1. 添加正则表达式提取器 右键线程组->添加->后置处理器->正则表达式提取器 2. 提取器配置介绍 ...
- GLSL-几何着色器详解跟实例(GS:Geometry Shader)[转]
[OpenGL4.0]GLSL-几何着色器详解和实例(GS:Geometry Shader) 一.什么是几何着色器(GS:Geometry Shader) Input Assembler(IA)从顶点 ...
随机推荐
- window server 2008 配置ftp并实现用户隔离
文件传输协议(FTP)是一个标准的网络协议,用于传输计算机文件从一台主机到另一台主机通过TCP为基础的网络,如互联网. -WIKI百科 好久没更新教程了, 今天更新一下博客,也不知道会不会有人看….本 ...
- The hub and spoke model 轮辐模型/辐射模型
最近一些文档中提到The Hub and Spoke Model,这里mark一下.hub表示轮毂,spoke表示轮辐,轮辐模型是简化网络路由的一套中心化的体系,广泛应用于航空.货运.快递以及网络技术 ...
- JDK动态代理小例子
一个小汽车,有一个跑run()的方法,我们想使用jdk动态代理使小汽车执行run之前 加点油,run之后洗车. 有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的 ...
- Webmin忘记密码解决方法,及配置文件介绍
Webmin忘记Web登陆时候的密码,无法登陆了,Google了一下,基本方法是通过changepass.pl可以修改密码 首先找到changepass.pl这个文件目录 $sudo locate c ...
- Python+Selenium 自动化实现实例-获取测试对象的Css属性
#coding:utf-8 '''获取测试对象的css属性场景 当你的测试用例纠结细枝末节的时候,你就需要通过判断元素的css属性来验证你的操作是否达到了预期的效果.比如你可以通过判断页面上的标题字号 ...
- jmeter-----GUI运行和非GUI运行的区别
gui:界面会消耗很多资源,并且运行的结果是保存在Jmeter运行的内存中.当时间一长,内存增长到一定程度,就会报错,甚至假死. 非gui:实时的将运行log文件保存到本地文件中,不会撑爆内存.并且对 ...
- Codeforces Round #300 E - Demiurges Play Again
E - Demiurges Play Again 感觉这种类型的dp以前没遇到过... 不是很好想.. dp[u] 表示的是以u为子树进行游戏得到的值是第几大的. #include<bits/s ...
- SQL 如何查找一个表里,每个班级各个学科的最高分?
SQL 如何查找一个表里,每个班级各个学科的最高分? 学生表:STUDENT(S#,SNAME,SAGE,SSEX,CLASSNO) 班级表:CLASS(CLASSNO,CLASSNAME) 课程表: ...
- 【Java】 String和char[]类型间的相互转化
(1)String类型转char[] 类型,使用String类型的toCharArray()方法: (2)char[] 类型转String类型,使用String.valueOf()方法: public ...
- JOYOI 西瓜种植 [差分约束系统]
题目传送门 西瓜种植 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 笨笨:小西瓜,小西瓜~路人甲:不会呀,这西瓜明明就大着啊…… ...