struts2的转换器,局部,全局
来源:互联网 发布:同步翻译软件 英语 编辑:程序博客网 时间:2024/05/17 00:14
Struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,Struts2可以使用内建的类型转换器实现自动的转换;但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式了。
局部类型转换:
对于自定义的类型转换器来说需要提供3个信息:Action的名字、Action中待转换的属性名以及该属性对应的类型转换器。其中Action的名字是通过属性文件名来获得的、Action中待转换的属性名是通过属性文件中的key来获得的,该属性对应的类型转换器是通过该key所对应的value来获得的。
文件名是有规则的.action名字-conversion.properties.内容如下:属性名=转换器的全路径名.如user=cn.wenping.converter.UserConverter.他告诉框架对应Action中的属性使用什么样的类型转换器.
转换就不属于业务逻辑.通用的转换器要继承自DefaultTypeConverter,才具备类型转换的功能,这是最通用的一种方式.
代码如下:
public class UserConvertor extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
if(User.class==toType){//从前端页面向后台转
String[] str=(String[])value;
String strValue=str[0];
StringTokenizer st=new StringTokenizer(strValue, ",");
String username=st.nextToken();
String password=st.nextToken();
User user=new User();
user.setUsername(username);
user.setPassword(password);
return user;
}else if(String.class==toType){
User user=(User)value;
String username=user.getUsername();
String password=user.getPassword();
String userInfo="username:"+username+",password:"+password;
return userInfo;
}
return null;
}
}
可以使用Struts2框架自带的类型转换器StrutsTypeConverter简化类型转换代码的编写,StrutsTypeConverter继承于DefaultTypeConverter父类,并且提供了两个抽象方法:convertFromString与convertToString,分别表示从页面的字符串转换为后台对象以及从后台对象转换为页面的字符串,我们只需实现这两个抽象方法即可实现类型转换
代码 如下:
public class UserConvorter2 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
User user=new User();
String strValue=values[0];
StringTokenizer st=new StringTokenizer(strValue,",");
user.setUsername(st.nextToken());
user.setPassword(st.nextToken());
return user;
}
@Override
public String convertToString(Map context, Object o) {
User user=(User)o;
String username=user.getUsername();
String password=user.getPassword();
String userInfo="username:"+username+",密码:"+password;
return userInfo;
}
}
如何进行批量转换:
public class UserConverter3 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
List<User> user=new ArrayList<User>();
for(String value:values){
StringTokenizer st=new StringTokenizer(value,",");
User u=new User();
u.setUsername(st.nextToken());
u.setPassword(st.nextToken());
user.add(u);
}
return user;
}
@Override
public String convertToString(Map context, Object o) {
List<User> list=(List)o;
String str="";
for(int i=0;i<list.size();i++){
User user=list.get(i);
String username=user.getUsername();
String password=user.getPassword();
str+="username:"+username+",password:"+password+"<br>";
}
return str;
}
}
全局类型转换:
全局类型转换。在src目录下新建xwork-conversion.properties,该文件的内容是待转换的类=转换器的名字,即com.shengsiyuan.bean.User=com.shengsiyuan.converter.UserConverter2
其他 的跟局部的没什么两样的,不同的是全局的类型每个Action都用这种类型转换器.,而局部的是一个Action专用的
- struts2的转换器,局部,全局
- struts2-局部类型和全局类型转换器
- struts2自定义全局和局部类型转换器
- Struts2之自定义局部类型转换器、全局类型转换器
- Struts2第五篇【类型转换器、全局、局部类型转换器】
- Struts2(二)局部与全局类型转换器
- Struts2自定义类型转换器分为局部类型转换器和全局类型转换器
- 基于Struts2的全局类型转换器
- 基于Struts2的全局类型转换器
- struts2局部类型转换器的使用。
- struts2示例代码-自定义局部类型转换器和自定义全局类型转换器
- struts2 自定义全局类型转换器
- struts2自定义局部类型转换器
- struts2 自定义局部类型转换器
- struts2注册局部类型转换器
- 【Struts2】自定义局部类型转换器
- 自定义类型转换器--局部和全局
- struts自定义类型转换器,局部和全局
- fping的使用方法
- 自动升级的原理及实现
- HDU 1085 1028 母函数
- 心情日志
- 每日微软面试题——day 2
- struts2的转换器,局部,全局
- ZOJ 3167 Find 7 Faster Than John Von Neumann
- Android Actionbar学习笔记(三)-----修改Actionbar的样式
- 16道嵌入式C语言面试题(经典)
- C++中extern “C”含义深层探索
- [Java] JAVA加密算法简介
- android的xml解析
- zoj 1962 How Many Fibs
- Flash As3.0 学习笔记 第二课-编写元件类-将元件添加到场景中