全局类型转换和局部类型转换的实现方式差不多,这里就仅以局部类型转换为类,看看是怎么实现的。
我们完成这样的功能:在界面,用户名和密码在同一个输入框用‘;’号隔开,服务端解析出来。
<%@ 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