[英]How to create updateable panel using AjaxLink of Wicket?
我试图实现一个链接(实际上是许多链接),该链接使用Wicket的AjaxLink更新网站中的表格。 但是我失败了,该表永远不会更新(我有“ setOutputMarkupId(true)”并调用“ setDefaultModelObject”和“ addComponent”,但是肯定还有其他错误)。
如何实现一个包含多个链接的面板和一个显示动态数据的表格,取决于所单击的链接? 有人可以举个例子吗(也许有两个链接,当单击第一个链接时,表格显示1-10之间的两个随机数;当单击第二个链接时,表格显示1-100之间的随机数字)? 无需重新加载整个页面,而仅重新加载表格的html?
一个可能的原因可能是您没有使用“可刷新”模型,而是获取了列表项并将它们直接传递给组件,因此列表get在会话中被序列化并且不会被更新。
如果是这种情况,请将LoadableDetachableModel(在其load方法中检索列表)传递给组件。 如果没有看到您的代码,我就不会再具体了。
我认为您没有明确定义自己在做什么。
这两个表是不同的实现吗? 如果是这样,那么您的代码是正确的-您必须用新组件替换旧组件,然后将新组件添加到ajax响应中。
但实际上,我想您有1个表组件实现。
因此,您需要做的是这样的事情:
public class RandomNumberListModel extends LoadableDetachableModel {
private int upperBound;
public RandomNumberListModel(int upperBound) {...}
public void setUpperBound(int upperBound) {...}
protected Object load() {
// generate random number list using upper bound
// return list
}
}
...
final MyTableComponent table = new MyTableComponent(new RandomNumberListModel(30));
add(table);
AjaxLink link = new AjaxLink("myButton") {
public void onClick(final AjaxRequestTarget target) {
table.getModel().setUpperBound(100);
target.addComponent(table);
}
};
add(link);
(编辑)我添加了一个动态的,可重用的模型来说明该模型如何工作。 有多种实现方法,具体取决于您希望可重用的内容。 关键是该模型动态生成列表(即根据请求),并且可以在onClick回调中操纵数字范围的upperBound。
就像jboyd询问的那样,您是否有知道在Ajax响应中发送表内容的代码?
final Component tableComponent = ....;
AjaxLink link = new AjaxLink("myButton"){
public void onClick(final AjaxRequestTarget target) {
target.addComponent(tableComponent);
}
};
add(link);
addComponent是jboyd所指的部分。
wicketstuff.org示例中有一个这样的示例,即树/树表之一。 顶部的三个链接更改了表格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.