java

位置:IT落伍者 >> java >> 浏览文章

struts2类型转化器详解(带例子)


发布日期:2024年04月02日
 
struts2类型转化器详解(带例子)

Struts有两种类型转化器

一种局部一种全局

如何实现

第一步定义转化器

第二部注册转化器

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

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

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

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

我们的类为DateTypeChangejava

package comfish;

import javatextSimpleDateFormat;

import javautilDate;

import javautilMap;

import comopenversionimplDefaultTypeConverter;

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

@Override

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

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

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

try {

if(toType==Dateclass){

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

return formatparse(parm[]);

}elseif(toType==Stringclass){

Date date=(Date)value;

return formatformat(date);

}

} catch (Exception e) {

}

returnnull;

}

}

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

书写格式要转化的属性的类型(不加包名)+conversionproperties

文件里面写brithday=comfishDateTypeChange

顺便把其他几个testJava也写上

package comfish;

import javautilDate;

publicclass Test {

private String name;

private String id;

private Date brithday;

public Date getBrithday() {

returnbrithday;

}

publicvoid setBrithday(Date brithday) {

thisbrithday = brithday;

}

public String getName() {

returnname;

}

publicvoid setName(String name) {

thisname = name;

}

public String getId() {

returnid;

}

publicvoid setId(String id) {

thisid = id;

}

public String execute(){

returnsuccess;

}

}

接着Strutsxml

<package name=fish namespace=/test extends=strutsdefault>

<action name=redfish class=comfishTest method=execute>

<param name=name>xxxx</param>

<result name=success>/indexjsp</result>

</action>

然后MyJspJSP

<form action=/strutstest/test/redfishaction>&nbsp;

<input type=text name=username>

<input type=text name=id>

<input type=text name=brithday>

<input type=submit value=确定>

最后indexJSP

name=${name}<br>

id= ${id} <br>

brithday=${brithday}<br>

这时我们在indexJSP页面中输入yyyyMMdd类型的日期类型时struts也能转化成日期格式处理了

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

只要改properties文件

将他移动到webinf/classess下命名是

xwrokconversionproperties

在里面的内容

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

所以是这么写

JavautilDate=comfishDateTypeChange

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

               

上一篇:图文并茂教你如何在Eclipse中看源代码

下一篇:别让Hibernate偷走了你的标识符