10620171014
10620171014
1、编写一个类,此类要继承于StrutsTypeConverter类
1)、public abstract Object convertFromString(Map context, String[] values, Class toClass);[String --> 对应的属性类型]
2)、public abstract String convertToString(Map context, Object o);[对应的属性类型 --> String,页,页面输出]
3)、参数:(1)、context:Action上下文[ActionContext里面的map对象];(2)、values:表单提交的参数值 (3)、toClass:指明属性类型
2、注册换器(局部)
1)、创建一个属性文件:ActionClassName-conversion.properties[与相对应 Action 放在同一个目录下]
2)、文件内容:属性名称 = 类型转换器的全类名
3、注册换器(全局)
1)、创建xwork-conversion.properties文件[在WEB-INF/classes目录(也就是src)下]
2)、文件内容:待转换的类型=类型转换器的全类名package com.tiger.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.tiger.bean.User;
/**
* strtus2自定义装换器
* @author tiger
* @time 2017年10月14日
*/
public class MyConverter extends StrutsTypeConverter {
/**
* 数据转换的核心逻辑方法
*/
@Override
public Object convertFromString(Map context, String[] values, Class cls) {
if(values != null && values.length > 0) {
User[] users = new User[values.length];
int index = 0;
for(String value:values) {
String username = value.split("/")[0];
String password = value.split("/")[1];
User user = new User(username, password);
users[index++] = user;
}
return users;
}
return null;
}
/**
* 自定义格式输出数据
*/
@Override
public String convertToString(Map context, Object values) {
StringBuffer strBuf = new StringBuffer();
User[] users = (User[])values;
for(User user:users) {
strBuf.append("用户名 = "+user.getUsername()+" 密码 = "+user.getPassword()+"; ");
}
return strBuf.toString();
}
}
package com.tiger.action;
import com.opensymphony.xwork2.ActionSupport;
import com.tiger.bean.User;
/**
* 定义一个用户数组,接收前台输入的参数,
* strtus2 不能进行自动转换,
* 此时需要自定义一个类型转换器
* @author tiger
* @time 2017年10月14日
*/
public class SaveUserAtion extends ActionSupport {
private static final long serialVersionUID = 1L;
private User[] users;
@Override
public String execute() throws Exception {
return SUCCESS;
}
public User[] getUsers() {
return users;
}
public void setUsers(User[] users) {
this.users = users;
}
}
users=com.tiger.converter.MyConverter
##users=com.tiger.converter.JsonConverterpackage com.tiger.bean;
import java.io.Serializable;
/**
* userbean
* @author tiger
* @time 2017年10月14日
*/
public class User implements Serializable {
private String username;
private String password;
public User() {
super();
}
public User(String username, String password) {
super();
this.username = username;
this.password = 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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
package com.tiger.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.tiger.bean.User;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* strtus2自定义装换器【针对JSON数据】
* {'user':[{'username':'Brett','password':'1111'},{'username':'Jason','password':'2222'}]}
* @author tiger
* @time 2017年10月14日
*/
public class JsonConverter extends StrutsTypeConverter {
/**
* 解析转换数据的核心方法
*/
@Override
public Object convertFromString(Map context, String[] values, Class cls) {
JSONObject jsonObj = JSONObject.fromObject(values[0]);
JSONArray jsonArr = jsonObj.getJSONArray("user");
//数据中JSON对象
User[] users = new User[jsonArr.size()];
for(int i = 0;i < jsonArr.size();i++) {
JSONObject jsonUserObj=jsonArr.getJSONObject(i);
String username = jsonUserObj.getString("username");
String password = jsonUserObj.getString("password");
User user = new User(username, password);
users[i] = user;
}
return users;
}
/**
* 数据输出格式
*/
@Override
public String convertToString(Map context, Object object) {
User[] values = (User[]) object;
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
for(int i = 0;i < values.length;i++) {
JSONObject userJsonObject = new JSONObject();
userJsonObject.put("username", values[i].getUsername());
userJsonObject.put("password", values[i].getPassword());
jsonArray.add(i, userJsonObject);
}
jsonObject.put("user", jsonArray);
return jsonObject.toString();
}
}