看到集合类型转换器时,发现使用List进行类型转换后在结果显示页获取值时怎么还可以用数组形式来获得?
welcome.js
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>转换成功</title>
</head>
<body>
转换成功!<br>
用户名1为:<s:property value="user[0].name"/><br>
密码1为:<s:property value="user[0].pass"/><br>
用户名2为:<s:property value="user[1].name"/><br>
密码2为:<s:property value="user[1].pass"/><br>
</body>
</html>
LoginAction.java
package lee;
import java.util.List;
import com.opensymphony.xwork2.Action;
/**
* @author yeeku.H.lee kongyeeku@163.com
* @version 1.0
* <br>Copyright (C), 2005-2008, yeeku.H.Lee
* <br>This program is protected by copyright laws.
* <br>Program Name:
* <br>Date:
*/
public class LoginAction implements Action
{
private List<User> user;
private String tip;
public void setUser(List<User> user)
{
this.user = user;
}
public void setTip(String tip)
{
this.tip = tip;
}
public List<User> getUser()
{
return (this.user);
}
public String getTip()
{
return (this.tip);
}
public String execute() throws Exception
{
if (getUser().get(0).getName().equals("scott")
&& getUser().get(0).getPass().equals("tiger") )
{
setTip("转换成功");
return SUCCESS;
}
else
{
setTip("转换失败");
return ERROR;
}
}
}
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;
/**
* @author yeeku.H.lee kongyeeku@163.com
* @version 1.0
* <br>Copyright (C), 2005-2008, yeeku.H.Lee
* <br>This program is protected by copyright laws.
* <br>Program Name:
* <br>Date:
*/
public class UserConverter extends StrutsTypeConverter
{
public Object convertFromString(Map context, String[] values, Class toClass)
{
if (values.length > 1)
{
List<User> res=new ArrayList<User>();
for (int i = 0; i < values.length ; i++ )
{
User user = new User();
String[] userValues = values[i].split(",");
user.setName(userValues[0]);
user.setPass(userValues[1]);
res.add(user);
}
return res;
}
else
{
User user = new User();
String[] userValues = values[0].split(",");
user.setName(userValues[0]);
user.setPass(userValues[1]);
return user;
}
}
@Override
public String convertToString(Map context, Object o)
{
if (o instanceof User)
{
User user = (User)o;
return "<" + user.getName() + "," + user.getPass() + ">";
}
else if (o instanceof User[])
{
User[] users = (User[])o;
String result = "[";
for (User user : users )
{
result += "<" + user.getName() + "," + user.getPass() + ">";
}
return result + "]";
}
else
{
return "";
}
}
}