strtus2自定义转换器

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();
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljt-tiger

thanks

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值