struts2--自定义数组属性类型转换器(一定要理解对象数组的概念!)
2017-08-07 08:33
489 查看
实现如下:
1、index.jsp:
javabean:
LoginAction.java
类型转换器:
LoginAction-conversion.properties文件:
ok.jsp页面:
深刻反思!
很简单的类型转换却找了很久的bug! 究其原因出在了对象数组身上。
二:集合类型转换器
package com.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
impor
e4ff
t org.apache.struts2.util.StrutsTypeConverter;
import com.bean.User;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class UserConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
List<User> users = new ArrayList<User>();
for (int i = 0; i < values.length; i++) {
String[] userValue = values[i].split(",");
User user = new User();
user.setUsername(userValue[0]);
user.setPassword(userValue[1]);
users.add(user);
}
return users;
}
@Override
public String convertToString(Map context, Object values) {
if(values instanceof List){
List<User> users = (List<User>)values;
String reStr = "";
for (int i = 0; i < users.size(); i++) {
reStr += "用户名:"+users.get(i).getUsername()+" 密码:"+users.get(i).getPassword()+"\n";
}
return reStr;
}
else return null;
}
}
1、index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:form action = "login" method = "get"> <s:textfield name = "user" label = "用户名及密码1"></s:textfield> <s:textfield name = "user" label = "用户名及密码2"></s:textfield> <s:textfield name = "user" label = "用户名及密码3"></s:textfield> <s:submit value = "提交"></s:submit> </s:form> </body> </html>
javabean:
package com.action; import com.bean.User; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private User[] user; public String execute() { return SUCCESS; } public User[] getUser() { return user; } public void setUser(User[] user) { this.user = user; } }
LoginAction.java
package com.action; import com.bean.User; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private User[] user; public String execute() { return SUCCESS; } public User[] getUser() { return user; } public void setUser(User[] user) { this.user = user; } }
类型转换器:
package com.converter; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; import com.bean.User; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class UserConverter extends StrutsTypeConverter{ @Override public Object convertFromString(Map context, String[] values, Class toClass) { User[] users = new User[values.length]; for (int i = 0; i < values.length; i++) { String[] userValue = values[i].split(","); users[i] = new User(); //必须new对象! users[i].setUsername(userValue[0]); users[i].setPassword(userValue[1]); } return users; } @Override public String convertToString(Map context, Object values) { if(values instanceof User[]){ User[] users = (User[])values; String reStr = ""; for (int i = 0; i < users.length; i++) { reStr += "用户名:"+users[i].getUsername()+" 密码:"+users[i].getPassword()+"\n"; } return reStr; } else return null; } }
LoginAction-conversion.properties文件:
user=com.converter.UserConverter
ok.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'ok.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:debug/> <s:property value = "user"/> </body> </html>
深刻反思!
很简单的类型转换却找了很久的bug! 究其原因出在了对象数组身上。
二:集合类型转换器
package com.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
impor
e4ff
t org.apache.struts2.util.StrutsTypeConverter;
import com.bean.User;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class UserConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
List<User> users = new ArrayList<User>();
for (int i = 0; i < values.length; i++) {
String[] userValue = values[i].split(",");
User user = new User();
user.setUsername(userValue[0]);
user.setPassword(userValue[1]);
users.add(user);
}
return users;
}
@Override
public String convertToString(Map context, Object values) {
if(values instanceof List){
List<User> users = (List<User>)values;
String reStr = "";
for (int i = 0; i < users.size(); i++) {
reStr += "用户名:"+users.get(i).getUsername()+" 密码:"+users.get(i).getPassword()+"\n";
}
return reStr;
}
else return null;
}
}
相关文章推荐
- struts2中怎么覆盖默认错误信息以及两种自定义类型转换器的方法
- Struts2学习教程之自定义类型转换器的方法
- Struts2系统学习(8)自定义类型转换器
- Struts2:自定义类型转换器
- struts2自定义类型转换器
- struts2自定义类型转换器
- 框架学习之Struts2 第三节 请求参数的接收和自定义类型转换器
- struts2自定义类型转换器
- struts2实现Date类型转换和自定义类型转换器
- Struts2之自定义局部类型转换器、全局类型转换器
- struts2 自定义类型转换器
- struts2自定义类型转换器:DefaultTypeConverter
- 32-35. Struts2_类型转换错误消息的显示和定制&自定义类型转换器&类型转换器与复杂属性&集合协同使用
- Struts2实现自定义转换器和全局类型转换器
- struts2自定义类型转换器
- Struts2之自定义局部类型转换器、全局类型转换器
- Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证
- struts2实现自定义数据类型转换器
- struts2自定义类型转换器