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



我有以下类:

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;
}

我有以下检票口面板:

<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 应由具有所需项集合的模型填充
   列表模型人员模型 =//...DAO 访问(数据库)    ListView peopleList = new ListView("resultingGroups", peopleModel){ ... };
  • 为了重新绘制(刷新列表视图),您应该将peopleList包含在带有.setOutputMarkupId(true);的容器中(以便 Wicket 能够通过 ajax 找到该容器)。
...    WebMarkupContainer peopleContainer = new WebMarkupContainer("container");    peopleContainer.setOutputMarkupId(true);    peopleContainer.add(peopleList);...
  • 。然后,每当您想要刷新列表中显示的结果时,您需要将新结果设置为模型 ( peopleModel ) 并重新绘制具有 ListView 的容器(*)
public void onEvent(AjaxRequestTarget target) {   //...在按钮单击或其他东西时    新人列表 =//...道    peopleModel.setObject(newPeopleList);    target.add(peopleContainer);(*) 重绘}

希望有帮助。更多例子在这里

https://cwiki.apache.org/WICKET/how-to-repaint-a-listview-via-ajax.html

检查 https://github.com/vineetsemwal/quickview/wiki

最新更新