- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在通过 Ajax 删除条目后,我尝试在 PropertyListView 进行更新,但由于某种原因它无法工作。
我已将 PropertyListView 添加到 WebMarkupContainer 并将 List 添加到此 View 。
谁能帮忙
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
@SuppressWarnings("serial")
public class StockViewPanel extends Panel{
private WebMarkupContainer listContainer;
@SuppressWarnings("rawtypes")
private PropertyListView plw;
@SuppressWarnings({ "rawtypes", "unchecked" })
public StockViewPanel(String id) {
super(id);
IModel model = new LoadableDetachableModel() {
@Override
protected Object load() {
return WicketApplication.getStockEntrys();
}};
plw = new PropertyListView("stockEntrys", model )
{
@Override
protected void populateItem(final ListItem item)
{
//StockEntry stockEntry = (StockEntry) item.getModelObject();
item.add(new Label("name"));
//SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
item.add(new Label("date"/*, formatter.format(stockEntry.getDate())*/));
//NumberFormat nf = NumberFormat.getInstance(new Locale("da", "dk"));
item.add(new Label("number"/*, nf.format(stockEntry.getNumber())*/));
item.add(new Label("price"/*, nf.format(stockEntry.getPrice())*/));
item.add(new AjaxLink("deleteEntryLink"){
@Override
public void onClick( AjaxRequestTarget target )
{
List list = new ArrayList(WicketApplication.getStockEntrys());
Object ob = item.getModelObject();
list.remove(ob);
WicketApplication.setEntrys(list);
target.add(listContainer);
}
});
}
};
listContainer = new WebMarkupContainer("listContainer");
listContainer.setOutputMarkupId(true);
listContainer.add(plw);
add(listContainer);
}
}
<html>
<body>
<wicket:panel>
<table wicket:id="listContainer">
<thead>
<th>Navn</th>
<th>Dato</th>
<th>Antal</th>
<th>Pris</th>
<th></th>
</thead>
<tbody>
<tr wicket:id="stockEntrys" class="stockEntry">
<td wicket:id="name">name</td>
<td wicket:id="date">date</td>
<td wicket:id="number">number</td>
<td wicket:id="price">price</td>
<td> <a href="#" wicket:id="deleteEntryLink">DELETE</a> </td>
</tr>
</tbody>
</table>
</wicket:panel>
</body>
</html>
最佳答案
您正在使用LoadableDetachableModel
,该模型每个RequestCycle调用一次load()
方法,并保留它的transient
副本。当您使用 WicketApplication.setEntrys(list);
更新条目列表时,您不会更新模型的 transient
实例。
直接使用IModel
而不是LoadableDetachableModel
。
关于java - Wicket - 使用 AjaxLink 更新 WebMarkupContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652215/
在我的 Wicket 网页中,我有一个 WebMarkupContainer,其中包含一个 ListView: notifications = new ArrayList(...); ListView
嘿,我有一个嵌套在 ListView 中的 ListView,我想在单击 AjaxLink 时更改内部 ListView 的可见性。 我看了很多关于它的帖子,并从中吸取了一些建议。例如。 : .set
在通过 Ajax 删除条目后,我尝试在 PropertyListView 进行更新,但由于某种原因它无法工作。 我已将 PropertyListView 添加到 WebMarkupContainer
基本上我有一个包含 DateTextField 组件的 WebMarkUpContainer,我想让它仅在我检查 AjaxCheckBox 时可见。 一般来说我的代码是: private static
我是一名优秀的程序员,十分优秀!