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>
<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类型我都可以转化为这种格式处理