您的位置:首页 > 编程语言 > Java开发

Struts 2.1:基于OGNL的类型转换

2011-09-13 22:16 309 查看
Struts 2内建的OGNL表达式的支持,因此在Struts 2中甚至可以直接将字符串参数转换成符合类型。

使用MAP实例

lee\LoginAction.java

package lee;

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

public class LoginAction implements Action
{
//User类型属性封装请求参数
private Map<String ,User> users;
private String tip;
//user属性的setter和getter方法
public void setUsers(Map<String ,User> users)
{
this.users = users;
}
public Map<String ,User> getUsers()
{
return (this.users);
}
//tip属性的setter和getter方法
public void setTip(String tip)
{
this.tip = tip;
}
public String getTip()
{
return (this.tip);
}
//处理用户请求的execute方法
public String execute() throws Exception
{
//通过user属性的name属性和pass属性来决定转向
if (getUsers().get("one").getName().equals("crazyit")
&& getUsers().get("one").getPass().equals("leegang"))
{
setTip("转换成功");
return SUCCESS;
}
else
{
setTip("转换失败");
return ERROR;
}
}
}

lee\User.java

package lee;
public class User
{
//两个普通属性
private String name;
private String pass;

//无参数的构造器
public User()
{
}
//初始化全部属性的构造器
public User(String name , String pass)
{
this.name = name;
this.pass = pass;
}

//name属性的setter和getter方法
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}

//pass属性的setter和getter方法
public void setPass(String pass)
{
this.pass = pass;
}
public String getPass()
{
return this.pass;
}

}

\input.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>直接封装成Map</title>
</head>
<body>
<form action="login.action" method="post">
<table align="center" width="360">
<caption><h3>直接封装成对象Map</h3></caption>
<tr>
<td>第一个用户名:<input type="text" name="users['one'].name"/></td>
</tr>
<tr>
<td>第一个密码:<input type="text" name="users['one'].pass"/></td>
</tr>
<tr>
<td>第二个用户名:<input type="text" name="users['two'].name"/></td>
</tr>
<tr>
<td>第二个密码:<input type="text" name="users['two'].pass"/></td>
</tr>
<tr align="center">
<td><input type="submit" value="转换"/>
<input type="reset" value="重填" /></td>
</tr>
</table>
</form>
</body>
</html>

类似的,如果我们要访问Action的Map类型的属性,也可以使用OGNL表达式:

<body>
转换成功!<br />
key为one的用户名为:<s:property value="users['one'].name"/><br />
key为one的密码为:<s:property value="users['one'].pass"/><br />
key为two的用户名为:<s:property value="users['two'].name"/><br />
key为two的密码为:<s:property value="users['two'].pass"/><br />
</body>


如果把LoginAction中的users属性改为List<String>,一样可以利用OGNL表达式:

<form action="login.action" method="post">
<table align="center" width="360">
<caption><h3>直接封装成对象 List</h3></caption>
<tr>
<td>第一个用户名:<input type="text" name="users[0].name"/></td>
</tr>
<tr>
<td>第一个密码:<input type="text" name="users[0].pass"/></td>
</tr>
<tr>
<td>第二个用户名:<input type="text" name="users[1].name"/></td>
</tr>
<tr>
<td>第二个密码:<input type="text" name="users[1].pass"/></td>
</tr>
<tr align="center">
<td><input type="submit" value="转换"/>
<input type="reset" value="重填" /></td>
</tr>
</table>
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: