数组属性的类型转换器

lee\LoginAction.java

 

package lee;

import com.opensymphony.xwork2.Action;
import java.util.Date;



public class LoginAction implements Action
{
	private User[] users;
	private Date birth;
	private String tip;

	//无参数的构造器
	public LoginAction()
	{
	}

	//users属性的setter和getter方法
	public void setUsers(User[] users)
	{
		this.users = users;
	}
	public User[] getUsers()
	{
		return this.users;
	}

	//birth属性的setter和getter方法
	public void setBirth(Date birth)
	{
		this.birth = birth;
	}
	public Date getBirth()
	{
		return this.birth;
	}

	//tip属性的setter和getter方法
	public void setTip(String tip)
	{
		this.tip = tip;
	}
	public String getTip()
	{
		return this.tip;
	}

	//处理请求的execute方法
	public String execute() throws Exception
	{
		//只根据第一个数组元素判断转向逻辑
		if (getUsers()[0].getName().equals("crazyit")
			&& getUsers()[0].getPass().equals("leegang") )
		{
			setTip("转换成功");
			return SUCCESS;
		}
		else
		{
			setTip("转换失败");
			return ERROR;
		}
	}
}


lee\UserConverter.java

package lee;

import java.util.Map;
import ognl.DefaultTypeConverter;
import org.apache.struts2.util.StrutsTypeConverter;
import java.util.List;
import java.util.ArrayList;



public class UserConverter extends StrutsTypeConverter 
{
	//处理将字符串类型转换成复合类型的方法
	public Object convertFromString(Map context, 
		String[] values, Class toClass)
	{
		//如果请求参数数组的长度大于1
		if (values.length > 1)
		{
			//创建一个User数组
			User[] result = new User[values.length];
			//遍历请求参数数组
			for (int i = 0; i < values.length ; i++ )
			{
				//将每个数组元素转换成一个User实例
				User user = new User();
				String[] userValues = values[i]
					.split(",");
				user.setName(userValues[0]);
				user.setPass(userValues[1]);
				//将转换的User实例装入数组
				result[i] = user;
			}
			return result;
		}
		//如果请求参数数组的长度为1
		else
		{
			//创建一个User实例
			User user = new User();
			//将请求参数转换成一个User实例
			String[] userValues = values[0].split(",");
			user.setName(userValues[0]);
			user.setPass(userValues[1]);
			return user;
		}
	}
	//处理把复合类型转换成字符串类型的方法
	public String convertToString(Map context, Object o)
	{
		//如果需要转换的值是单个的User实例
		if (o instanceof User)
		{
			User user = (User)o;
			return "<" + user.getName() + "," 
				+ user.getPass() + ">";
		}
		//如果需要转换的值是User数组
		else if (o instanceof User[])
		{
			User[] users = (User[])o;
			String result = "[";
			for (User user : users )
			{
				result += "<" + user.getName()
					+ "," + user.getPass() + ">";
			}
			return result + "]";
		}
		else
		{
			return "";
		}
	}
}


List和数组是完全相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值