Html Wicket:使用ajax使用重复表单的更好方法是什么?

Html Wicket:使用ajax使用重复表单的更好方法是什么?,html,ajax,wicket,Html,Ajax,Wicket,我有以下课程: public class Group { private long id; private String name; ... private List<Person> members; } public class Person { private long id; private String name; private String comments; } 公共类组{ 私人长id; 私有字符串名称; ..

我有以下课程:

public class Group {
    private long id;
    private String name;
    ...
    private List<Person> members;
}

public class Person {
    private long id;
    private String name;
    private String comments;
}
公共类组{
私人长id;
私有字符串名称;
...
非公开名单成员;
}
公共阶层人士{
私人长id;
私有字符串名称;
私有字符串注释;
}
我有以下的导叶面板:

<wicket:panel>
   <div>
     <!-- Group data -->
   </div>
   <form wicket:id="group">
   <table>
      <tbody wicket:id="container">
         <tr wicket:id="members">
             <td wicket:id="personId"></td>
             <td wicket:id="name"></td>
             <td><input type="text" name="comments" wicket:id="comments" value="" /></td>
         </tr>
      </tbody>
   </table>
   <input type="submit" value="save" >
   </form>      
</wicket:panel>

另一方面,我有一个具有过滤功能的网页,可以显示不同的组:

<html>
<body>
   <form wicket:id="filterOptions">
     <!-- filter options -->
   </form>
   <div wicket:id="resultingGroups">
       <!-- contains the groups that matching the filters -->
   </div>
</body>
</html>

我想更新进行ajax提交的组。我尝试使用ListView,但不知道为什么,当我单击“保存”按钮时,更改会反映在第一个组面板中,如果我更新任何其他组并单击“保存”,则组对象不会更新

我做了很多研究,发现ListView并不是我想要做的事情的好选择,但我不知道哪个视图是正确的

过滤表单也可以与ajax按钮配合使用,而且效果很好

我是个新手


提前谢谢

实际上,ListView、DataView和其他中继器对您想要做的事情很有帮助

  • ListView应该由一个包含所需项集合的模型填充
  • …然后,每当您想要刷新列表中显示的结果时,您需要将新结果设置为模型(
    peopleModel
    ),并重新绘制包含ListView的容器(
    (*)
public void onEvent(AjaxRequestTarget目标){ //…按一下按钮什么的 newPeopleList=/…DAO setObject(newPeopleList); 目标。添加(peopleContainer);/(*)重新绘制 } 希望这有帮助。这里有更多的例子

检查

ListModel peopleModel = //... DAO access (database) ListView peopleList = new ListView("resultingGroups", peopleModel){ ... }; ... WebMarkupContainer peopleContainer = new WebMarkupContainer("container"); peopleContainer.setOutputMarkupId(true); peopleContainer.add(peopleList); ... public void onEvent(AjaxRequestTarget target) { //... on button click or something newPeopleList = // ... DAO peopleModel.setObject(newPeopleList); target.add(peopleContainer); // (*) repaint }