struts2前台jsp对后台action传递list集合时为什么list是空的

代码如下:action中:publicclassSetActionextendsBaseAction{privateList<User>list;.....getter和... 代码如下:
action中:
public class SetAction extends BaseAction {

private List<User> list;
.....getter 和setter方法

//list显示到jsp页面

public String select(){
UserService userService = new UserServiceImpl();
list = userService .getUserList(); //调用dao中的方法获得的list集合,集合中存放的是User对象
return “select”;
}
//取jsp中的list插入待后台
public String insert(){
system.out.println(list); //这边测试拿到数据的时候就显示null,没拿到数据

return "insert";
}
}

User的类:
public class User{
private String name;

private String id;

private double age;

.......getter和setter方法
}
jsp页面
<form method="post" action="set!insert" onsubmit=""> //此处何以点击按钮可以跳到action中的insert方法,配置文件就不写了
<table>
<s:iterator value="list">
<tr>
<td width="120px"><s:property value="name"/></td>
<td width="180"><input type="text" name="user.id" size="30" value="<s:property value='age'/>" /></td>
</tr>
<tr>
<td width="120px"></td>
<td width="180"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>

现在的问题是select方法得到的list可以传到jsp中显示出来,可是jsp中form提交到action中insert方法里时,得不到list集合,得到的是空指针异常,求帮助,如何解决,为什么这样
展开
 我来答
ForDream820
2013-09-18 · 超过20用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:31.8万
展开全部
两次action的数据无法共享,可以在select方法中将list放到session里面,在insert方法中从session中取list
更多追问追答
追问
dao方法

public List getAUserList(){
Session session = super.getSession();
Query query = session.createQuery(hql);

。。。
追答
public abstract class AbstractAction extends ActionSupport implements SessionAware {

protected Map session;

public void setSession(Map session) {
this.session = session;
}

你那个session是查询的session,我说的是session域,就像request域,但是适用范围比request大,在select里面session.put("list",list);然后在insert里面list = session.get("list");
demo50
2013-09-18
知道答主
回答量:21
采纳率:0%
帮助的人:14万
展开全部
你这个表单里的s标签没有写一个list的域,而是一个iterater,list没有提交给action。加一个<input type="hidden" name="list" id="list" />就可以了。
追问
请问下,这个标签写在哪里呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柒1989
2013-09-18 · TA获得超过236个赞
知道小有建树答主
回答量:428
采纳率:100%
帮助的人:405万
展开全部
private List<User> list;
是不是应该改为数组接收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小蔡先生向前冲
2013-09-18 · 超过17用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:37.7万
展开全部
后台list集合有值么? 有的话 你在后台接收list的变量要设成全局并且get set 在前台用<s:iterator value="" >value属性里填写后台list名字 然后在s:iterator里写<s:property value="">value属性里填写list里对象里的字段名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzgmusic
2013-09-18 · TA获得超过414个赞
知道小有建树答主
回答量:573
采纳率:66%
帮助的人:305万
展开全部
private List<User> list = new ArrayList<User> 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
其隐植
2013-09-18 · TA获得超过131个赞
知道小有建树答主
回答量:131
采纳率:100%
帮助的人:75.8万
展开全部
form中input元素的name属性加上list(如list.user.id)试试
追问
用您的方法改后,后台action中insert方法里得到的list有null变为了[],list的长度是0,也就是说,jsp中的list对象没放到list里面,用那位网友的sessoin传到时能传成功,可是老大不建议session传,说开销会大,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式