我有以下课程:
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小组:
<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>
另一方面,我有一个具有过滤功能的WebPage,并向我显示不同的组:
<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不是我想要做的好选择,但我不知道哪个View是正确的。
过滤器表单也适用于ajax按钮,并且工作正常。
我对Wicket很新。
提前致谢!!
答案 0 :(得分:1)
实际上,ListView,DataView和其他中继器对你想做的事情很有帮助。
ListModel peopleModel = //... DAO access (database) 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) { //... on button click or something newPeopleList = // ... DAO peopleModel.setObject(newPeopleList); target.add(peopleContainer); // (*) repaint }
希望有所帮助。这里有更多例子
https://cwiki.apache.org/WICKET/how-to-repaint-a-listview-via-ajax.html
答案 1 :(得分:0)