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和数组是完全相同的。