标签:
我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种。所以,我们需要类型转换!
全局类型转换和局部类型转换的实现方式差不多,这里就仅以局部类型转换为类,看看是怎么实现的。
我们完成这样的功能:在界面,用户名和密码在同一个输入框用‘;’号隔开,服务端解析出来。
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<h1>使用分号隔开用户名和密码信息</h1>
<form action="userAction.action">
user info:<input type="text" name="user"><br>
<input type="submit" value="submit">
</form>
</body>
</html>package com.zhanglianhai.bean;
public class User {
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;
}
}package com.zhanglianhai.struts2;
import com.opensymphony.xwork2.ActionSupport;
import com.zhanglianhai.bean.User;
public class UserAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println("username:" + user.getUsername());
System.out.println("username:" + user.getPassword());
return SUCCESS;
}
}package com.zhanglianhai.converter;
import java.util.Map;
import java.util.StringTokenizer;
import com.zhanglianhai.bean.User;
import ognl.DefaultTypeConverter;
public class UserConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
if (User.class == toType) { // 从页面向后台对象转换
String[] str = (String[]) value;
String firstValue = str[0];
StringTokenizer st = new StringTokenizer(firstValue, ";");
String username = st.nextToken();
String password = st.nextToken();
User user = new User();
user.setUsername(username);
user.setPassword(password);
return user;
} else {
return null;
}
}
}user=com.zhanglianhai.converter.UserConverter
标签:
原文地址:http://blog.csdn.net/zhanglianhai555/article/details/43983547