struts2 怎么绑定表单提交的数据?
我刚学Struts2请问各位大侠,怎么把表单提交的数据绑定到相应的Action中?比如用户登录:怎么把用户名和密码绑定到UserAction中。麻烦给详细代码~不是用Ht...
我刚学Struts2 请问各位大侠,怎么把表单提交的数据绑定到相应的Action中?比如用户登录 :怎么把用户名和密码绑定到UserAction中。麻烦给详细代码~
不是用 HtppServletRquest对象获取的,想问的是提交表单时,表单数据将自动保存到相应的JavaBean中。 展开
不是用 HtppServletRquest对象获取的,想问的是提交表单时,表单数据将自动保存到相应的JavaBean中。 展开
7个回答
展开全部
Struts2绑定请求数据有两种方法
方法一:直接绑定到action的属性上,就是将参数作为a ction类的属性,让OGNL自动填充.
方法二:绑定到一个javaBean实体类。就是楼主所说的这种方法
第一种:绑定到action的属性,要求表单中的数据名称与action中的属性名称必须一致,且有相应的setter/getter方法,例如:登录的用户名和密码
在前台页面
<input type="text" name="username"/>
<input type="password" name="password"/>
在action中定义两个属性:
private String username;
private String password;
//相应的set、get方法
就可获取:
System.out.println("username: "+username);
System.out.println("password: " +password);
方法二:绑定到一个javaBean实体类
先定义一个javaBean,其中有哪些属性根据表单数据域来定义
例如:定义一个用户信息Bean,相应的属性setter\getter方法
public class UserInfo{
private String username;
private String password;
//相应的属性setter、getter方法
}
前面页面:
<input type="text" name="userInfo.username"/>
<input type="password" name="userInfo.password"/>
注意这个userInfo就是你在action类中定义的一个UserInfo类型的属性
即action中定义:private UserInfo userInfo;也要有set、get方法
这样action就是自动绑定获取该参数
System.out.println("username: "+userInfo.username);
System.out.println("password: " +userInfo.password);
还有其他复杂一点的方法:
1、通过ActionContext对象的getParameters()方法,得到请求参数Map,然后通过parameterMap来获取请求参数。需要注意的是:当通过parameterMap的键取得参数值时,取得是一个数组对象,即同名参数的值的集合
ActionContext context=ActionContext.getContext();
Map parameterMap=context.getParameters();
String[] usernameArray=(String[])parameterMap.get("username");
String[] passwordArray=(String[])parameterMap.get("password");
//注意是一个数组对象
String username = usernameArray[0];
String password = passwordArray[0];
楼主也可以尝试尝试~
方法一:直接绑定到action的属性上,就是将参数作为a ction类的属性,让OGNL自动填充.
方法二:绑定到一个javaBean实体类。就是楼主所说的这种方法
第一种:绑定到action的属性,要求表单中的数据名称与action中的属性名称必须一致,且有相应的setter/getter方法,例如:登录的用户名和密码
在前台页面
<input type="text" name="username"/>
<input type="password" name="password"/>
在action中定义两个属性:
private String username;
private String password;
//相应的set、get方法
就可获取:
System.out.println("username: "+username);
System.out.println("password: " +password);
方法二:绑定到一个javaBean实体类
先定义一个javaBean,其中有哪些属性根据表单数据域来定义
例如:定义一个用户信息Bean,相应的属性setter\getter方法
public class UserInfo{
private String username;
private String password;
//相应的属性setter、getter方法
}
前面页面:
<input type="text" name="userInfo.username"/>
<input type="password" name="userInfo.password"/>
注意这个userInfo就是你在action类中定义的一个UserInfo类型的属性
即action中定义:private UserInfo userInfo;也要有set、get方法
这样action就是自动绑定获取该参数
System.out.println("username: "+userInfo.username);
System.out.println("password: " +userInfo.password);
还有其他复杂一点的方法:
1、通过ActionContext对象的getParameters()方法,得到请求参数Map,然后通过parameterMap来获取请求参数。需要注意的是:当通过parameterMap的键取得参数值时,取得是一个数组对象,即同名参数的值的集合
ActionContext context=ActionContext.getContext();
Map parameterMap=context.getParameters();
String[] usernameArray=(String[])parameterMap.get("username");
String[] passwordArray=(String[])parameterMap.get("password");
//注意是一个数组对象
String username = usernameArray[0];
String password = passwordArray[0];
楼主也可以尝试尝试~
2015-08-05 · 知道合伙人数码行家
关注
展开全部
在Struts2中,Form的绑定表单提交非常方便。
e.g: A 要在Action中取出页面提交的username和password,两个属性同属User对象,此时:
在Action中,声明public User user;并给出get()和set();
在JSP中,
<input type="text" name="user.username"/> 或用标签:<s:textfield name="user.username" label="用户名"/>
<input type="text" name="user.password"/> 或用标签:<s:textfield name="user.password" label="密 码"/>
这样可将user对象的输入值直接绑定到Action中。
e.g: B 然而,很多时候需要不不仅仅是一个对象,而是多个对象,List,Map,又或者Set。
先说 Map和List:
如果 Action 中的属性是 Map<String, User> users; 那么与此对应的表单写法就是:(用标签来写)
<s:textfield name="users['one'].username" label="第一个用户名"/>
<s:textfield name="users['one'].password" label="第一个密码"/>
<s:textfield name="users['two'].username" label="第二个用户名"/>
<s:textfield name="users['two'].password" label="第二个密码"/>
此时,绑定到Action中的就是一个Map类型的users["one","two"]
如果是对于 Action 中的 List 属性,List<User> users; 那么与此对应的表单写法就是:
<s:textfield name="users[0].username" label="第一个用户名"/>
<s:textfield name="users[0].password" label="第一个密码"/>
<s:textfield name="users[1].username" label="第二个用户名"/>
<s:textfield name="users[1].password" label="第二个密码"/>
此时,绑定到Action中的就是一个List类型的users[0,1]
e.g C 再来看看Set,set是一个无序集合,所以无法像 List 那样用数字下标来访问
此时提交页面这么写,最好提交前能根据输入的用户名自动修动输入框的 name。
用户名: <input name="users('scott').username"/>
密 码: <input name="users('scott').password"/>
显示的时候页面可用标签
用户名: <s:property value="users('scott').username"/>
密 码: <s:property value="users('scott').password"/>
<input type="user.username" value="jack">
<input type="user.username" value="lucy">
action中取得username的值是"jack,lucy".
注意:此处password是字符串类型,不是数组类型
e.g: A 要在Action中取出页面提交的username和password,两个属性同属User对象,此时:
在Action中,声明public User user;并给出get()和set();
在JSP中,
<input type="text" name="user.username"/> 或用标签:<s:textfield name="user.username" label="用户名"/>
<input type="text" name="user.password"/> 或用标签:<s:textfield name="user.password" label="密 码"/>
这样可将user对象的输入值直接绑定到Action中。
e.g: B 然而,很多时候需要不不仅仅是一个对象,而是多个对象,List,Map,又或者Set。
先说 Map和List:
如果 Action 中的属性是 Map<String, User> users; 那么与此对应的表单写法就是:(用标签来写)
<s:textfield name="users['one'].username" label="第一个用户名"/>
<s:textfield name="users['one'].password" label="第一个密码"/>
<s:textfield name="users['two'].username" label="第二个用户名"/>
<s:textfield name="users['two'].password" label="第二个密码"/>
此时,绑定到Action中的就是一个Map类型的users["one","two"]
如果是对于 Action 中的 List 属性,List<User> users; 那么与此对应的表单写法就是:
<s:textfield name="users[0].username" label="第一个用户名"/>
<s:textfield name="users[0].password" label="第一个密码"/>
<s:textfield name="users[1].username" label="第二个用户名"/>
<s:textfield name="users[1].password" label="第二个密码"/>
此时,绑定到Action中的就是一个List类型的users[0,1]
e.g C 再来看看Set,set是一个无序集合,所以无法像 List 那样用数字下标来访问
此时提交页面这么写,最好提交前能根据输入的用户名自动修动输入框的 name。
用户名: <input name="users('scott').username"/>
密 码: <input name="users('scott').password"/>
显示的时候页面可用标签
用户名: <s:property value="users('scott').username"/>
密 码: <s:property value="users('scott').password"/>
<input type="user.username" value="jack">
<input type="user.username" value="lucy">
action中取得username的值是"jack,lucy".
注意:此处password是字符串类型,不是数组类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Struts2里只需要定义和表单中相同名字的属性.就可以获取到他的值拉.
比如你的user和name两个表单的名字/
那你在Action里写private String user;
private String name;生成get,set属性..那你就可以通过getuser获取到表单中user的值了/
比如你的user和name两个表单的名字/
那你在Action里写private String user;
private String name;生成get,set属性..那你就可以通过getuser获取到表单中user的值了/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如 前台JSP <input type="text" name="user.uname">
<input type="password" name="user.pwd">
action中:
Users user;
getUser{};
setUser{}
直接保存了就 用${user.uname} 直接调出这个值了
<input type="password" name="user.pwd">
action中:
Users user;
getUser{};
setUser{}
直接保存了就 用${user.uname} 直接调出这个值了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接提交到action就可以了,在接受的action中使用变量的get和set方法就能接收到他的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询