数据类型转换+自定义数据转换
1. 自动类型转换?
.............
2. 手动类型转换?
例如:将数据value = 【3,lb,123456,2】转换为 用户对象
3. 如何实现手动类型转换功能?[局部使用的转换器,全局的]
步骤:
1.定义转换器类;[继承默认转换器DefaultTypeConverter]
2.重写方法converterValue(); 如何实现转换?
在执行action方法之前,调用自定义转换器中的转换方法,将数组转换成自定类型;
3.返回目标函数值类型
package com.zgq.convertion;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
import com.zgq.model.User;
public class UserConversion extends DefaultTypeConverter{
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
//value = 3,lb,123456,2
//将参数转换为 数组 开始解析 ,最后封装为对象
String[] strArry = (String[])value;
String[] usinfo = strArry[0].split(",");
User userEnt = new User();
//获取单个参数
//for(int i=0; i<strArry.length;i++){}
userEnt.setUid(Integer.parseInt(usinfo[0]));
userEnt.setLoginName(usinfo[1]);
userEnt.setUserPwd(usinfo[2]);
userEnt.setUserPower(Integer.parseInt(usinfo[3]));
//时间类型转换
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/*try {
ui.setUserBirthday(sdf.parse(usinfo[4]));
} catch (ParseException e) {
e.printStackTrace();
}*/
return userEnt;
}
}
4.配置转换器 启动
注意:必须在action所在目录,创建配置文件;
文件命名格式: Action类名-conversion.properties;
全局:放在src目录下
统配:xwork-conversion.properties;