分类: Java
2010-10-19 11:57:06
MVC框架,属于表现层的解决方案。
负责收集用户请求的参数,并将参数传给控制器组件
但所有的请求参数都是字符串类型,而java 为强类型语言
struts2的内建类型转换器
局部类型转换器:
在Action范围内使用
定义文件 ActionName-conversion.properties
位置:放置Action 类同目录下
内容: propertyName = 类型转换器
仅仅对某个Action 的属性起作用
properyName:Action类中要进行数据转换的属性名。
类型转换器:负责转换的类(全类名)
全局类型转换器:
在全局类型内使用
定义文件:xwork-conversion.propertes
位置:src 目录下
内容: propertyName = 类型转换器
对所有Action的特定类型的属性都会生效
propertyName:Action类中要进行数据转换的属性名.(全类名)
类型转换器:负责转换的类(全类名)
类型转换的错误处理:
conversionError拦截器
Struts2的类型转换器执行转换过程中出现错误,conversionError拦截器负责将错误封装成fileError,并将错误信息放入ActionContext中,并且返回input逻辑视图
显示的错误信息:
Invalid field value for field “user.age”;
处理显示的错误信息:
使用国际化资源文件
Xwork.default.invalid.fieldvalue={0}字段类型转换失败!
user.age字段类型转换失败!
Jsp代码
Properties代码
java.util.Date=org.cric.convertor.DateConverter
Java代码
package org.cric.convertor;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class DateConverter extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toClass) {
String[] strArray=values[0].split(",");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Integer.parseInt(strArray[0]));
calendar.set(Calendar.MONTH,Integer.parseInt(strArray[1])-1);
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(strArray[2]));
Date date = calendar.getTime();
return date;
}
public String convertToString(Map context, Object object) {
if(null!=object){
Date date = (Date)object;
SimpleDateFormat formater = new SimpleDateFormat("yyyy,MM,dd");
return formater.format(date);
}
return null;
}
}
Jsp代码
创建时间: