抽象类StrutsTypeConverter继承了DefaultTypeConverter接口,有如下方法:
abstract Object | convertFromString(Map context,String[] values, Class toClass) Converts one or more String values to the specified class. |
abstract String | convertToString(Map context,Object o) Converts the specified object to a String. |
Object | convertValue(Map context,Object o, Class toClass) |
StrutsTypeConverter简化了类型转换代码的编写,StrutsTypeConverter继承DefaultTypeConverter,提供了两个抽象的方法convertFromString()和convertToString,分别表示从页面的字符串转换为后台对象以及从后台对象转为页面的字符串,我们只需要实现这两个抽象方法即可实现类型转换。
将学习(一)中转换器代码修改成如下:
package com.struts.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.struts.bean.User;
public class UserConverter2 extends StrutsTypeConverter{
@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
User user = new User();
String str = arg1[0];
System.out.println(arg1.length);
System.out.println(arg1[0]);
int index = str.indexOf(";");
String username = str.substring(0,index);
String userpass = str.substring(index+1);
user.setPassword(userpass);
user.setUsername(username);
return user;
}
@Override
public String convertToString(Map arg0, Object arg1) {
String str = "";
if(arg1 instanceof User)
{
User user = (User)arg1;
str = "username:"+user.getUsername()+" ;---- userpass: "+user.getPassword();
}
return str;
}
}
全局类型转换:
在src目录下新建xwork-conversion.properties(该名称固定)。该文件的内容是待转换的类=转换器的名字如:com.struts2.bean.User = cm.struts2.converter.UserConverter。一般使用较少。