类型转换的意义:
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字段类型转换失败!
<form action="doDate.action" method="post"> 时间:<input type="text" name="createDate"> <input type="submit" value="提交"> </form>
java.util.Date=org.cric.convertor.DateConverter
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; } }
创建时间:<s:property value="createDate"/>