说明:此案例以用户以一个文本框的加","区分的方式输入用户名与密码,转换成User对象.
1. 先定义TblUser实体:
public class TblUser implements Cloneable {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
2. 定义一个继承ognl.DefaultTypeConverter类的转换类,重写方法:convertValue
public class UserTypeConvert extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object target, Member member,
String propertyName, Object value, Class toType) {
if (toType == TblUser.class) {
String[] parame = (String[]) value;
TblUser user = new TblUser();
String[] userValues = parame[0].split(",");
user.setUserName(userValues[0]);
user.setPassWord(userValues[1]);
return user;
}
if (toType == String.class) {
TblUser user = (TblUser) value;
return user.getUserName() + user.getPassWord();
}
return null;
}
}
3. 注册使用.
局部注册:
于处理请求的action同目录新建一个properties文件匹配转换.
如处理action名为:TypeConvertAction.
文件名为:TypeConvertAction-conversion.properties
内容如下:
user=com.test.convert.UserTypeConvert
全局注册:
于WEB应用的WEB/INF/SRC下面新建一个properties文件.
名:xwork-conversion.properties.内容如上:
user=com.test.convert.UserTypeConvert
注意:
此user对象需要对应两个地方:
1. 处理action中的参数:
public class TypeConvertAction extends ActionSupport {
private static final long serialVersionUID = 1450105477460242583L;
private TblUser user;
public TblUser getUser() {
return user;
}
public void setUser(TblUser user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if (null == user) {
return ERROR;
}
if (StringUtil.isNotNull(getUser().getUserName())) {
System.out.println("转换成功:"+getUser().getUserName());
}
return SUCCESS;
}
}
2. 请求页面的表单名:
输入用户名和密码以,分开
<s:form action="userManager/typeConvert.action">
<s:textfield name="user" key="用户名和密码:"></s:textfield>
<s:submit key="login"></s:submit>
</s:form>
----------------------------完,开发经验,以供后续开发使用与交流.-------------------------------
---------------------------------------------------------------------------------------尹当