如何将复杂对象列表发布到struts2

时间:2011-04-18 10:37:34

标签: jquery ajax list object struts2

我想将User对象列表发送到操作中,而用户在此处有字段名称和地址。

有些代码是这样的:网页是由jquery动态操作的。有网页的示例代码。

<form id="create">
  <tr id="1"> <td> <input type='text' name='name'/></td><td><input type='text' name='address'/></td></tr>
  <tr id="3"> <td> <input type='text' name='name'/></td><td><input type='text' name='address'/></td></tr>
</form>
<input type='submit' onclick="submit()"/>


<script>
  function submit() {
    var results = [];
    $("#create tr").each(function(index, tr) {
      var user = {
        name: tr.find('input[name="name"]').val(),
        address: tr.find('input[name="address"]').val()
      }
      results.push(user);
    });

    var param = {users:results};
    $.ajax({
      url: "save.action",
      data: param,
      type: 'post',
      success: function() {
        alert('success');  
      },
      error: function() {
        alert('error');  
      }
    });
  }
</script>

这样的动作代码:

@ParentPackage('json-default')
public class UserAction extends ActionSupport {
  private List<User> users;
  public List<User> getUsers(){
     return users;
  }
  public void setUsers(List<User> users){
     this.users = users;
  }

@Action(name="save", results={@Result{name="success",location="/webpage/addUser.jsp"}})
public String execute(){
 for(User user: Users){
    System.out.println(user.getName()+" address: "+ user.getAddress());
 }
 return SUCCESS; 
}
}

我的问题是为什么操作无法接收数据? 我从firebug捕获数据并且数据已经发布。 所以任何提示或错误? 这两天我很困惑,请帮忙。

3 个答案:

答案 0 :(得分:1)

如果你使用jQuery 1.4,你应该考虑到param序列化的变化。 JQuery在$ .ajax中提供了一个新标志来覆盖默认行为(并返回使用旧的param序列化方式):$ .ajax中的“传统”选项所以你应该尝试在JQuery上通过Ajax发送数据:

....
$.ajax({
    url:"save.action",
    data:param,
    type:'post',
    traditional: true,
....

答案 1 :(得分:0)

如果Firebug指示数据已成功发布,那么我建议您在Java端进行一些调试以确认。

尝试放置一个断点并查看即将进入的实际HttpServletRequest参数,以确保它们设置正确。如果是,请确保调用setUsers(List<User> user)方法。这应该指出故障的确切位置。

答案 2 :(得分:0)

你可以发布你的其余jsp,动作以及你发布回你行动的确切内容。没有看到其余的我会猜你没有正确处理原位列表更新。如果您使用的是“传统”HTML,我希望在HTML和返回的数据中看到对用户列表索引的引用,以便Struts知道要更新/创建的列表元素。

问候