我将一些数据输入到我的 propertyListview 中,周围有一个容器,但是当我想用 Ajax 更新它时,它什么也没做!如何使用 Ajax 更新我的 PropertyListview?
在后台编辑 我使用 JSON Parse 解析来自气象站的数据,该数据可以改变很多,所以我想更新 propertyListview 中的数据
public class WeerPanel extends Panel {
public WeerPanel(String id) throws IOException {
super(id);
final WeerService weerService = new WeerServiceImpl();
PropertyListView<Weer> newview = new PropertyListView<Weer>("weer", weerService.getWeer()) {
@Override
protected void populateItem(ListItem<Weer> item) {
item.add(new Label("temperatuur"));
item.add(new StaticImage("type", String.format("images/%s.png", item.getModelObject().getType())));
item.add(new Label("omschrijving"));
}
};
final WeerVoorspellingService weerVoorspellingService = new WeerVoorspellingServiceImpl();
PropertyListView<WeerVoorspelling> hateView = new PropertyListView<WeerVoorspelling>("weersvoorspelling", weerVoorspellingService.getWeerVoorspelling()) {
@Override
protected void populateItem(ListItem<WeerVoorspelling> item) {
item.add(new Label("dag"));
item.add(new StaticImage("typeVoorspelling", String.format("images/%s.png", item.getModelObject().getType())));
item.add(new Label("minTemperatuur"));
item.add(new Label("maxTemperatuur"));
}
};
final WebMarkupContainer containerWeer = new WebMarkupContainer("containerWeer");
containerWeer.setOutputMarkupId(true);
containerWeer.add(hateView);
containerWeer.add(newview);
add(containerWeer);
add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) {
@Override
protected final void onTimer(AjaxRequestTarget target) {
target.add(containerWeer);
}
});
}
}
这是我在后台做的一些代码,它是一个虚拟的,每次都会通过一个随机数改变天气的温度。
Random r = new Random();
int randomInt = r.nextInt(100);
weer.add(new Weer("rain", "Mooi bewolkt", randomInt, v.getVoorspellingen()));
虚拟代码很好,但在我的页面上仍然没有任何变化......好像我的列表没有得到任何新数据......
FIXED here 是供人们使用的代码
public class WeerPanel extends Panel {
public WeerPanel(String id) {
super(id);
add(createContainer());
add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) {
@Override
protected final void onTimer(AjaxRequestTarget target) {
target.add(createContainer());
}
});
}
private final WebMarkupContainer createContainer() {
final WeerService weerService = new WeerServiceImpl();
PropertyListView<Weer> newview = null;
try {
newview = new PropertyListView<Weer>("weer", weerService.getWeer()) {
@Override
protected void populateItem(ListItem<Weer> item) {
item.add(new Label("temperatuur"));
item.add(new StaticImage("type", String.format("images/%s.png", item.getModelObject().getType())));
item.add(new Label("omschrijving"));
}
};
} catch (Exception e) {
e.printStackTrace();
}
WeerVoorspellingService weerVoorspellingService = new WeerVoorspellingServiceImpl();
PropertyListView<WeerVoorspelling> hateView = null;
try {
hateView = new PropertyListView<WeerVoorspelling>("weersvoorspelling", weerVoorspellingService.getWeerVoorspelling()) {
@Override
protected void populateItem(ListItem<WeerVoorspelling> item) {
item.add(new Label("dag"));
item.add(new StaticImage("typeVoorspelling", String.format("images/%s.png", item.getModelObject().getType())));
item.add(new Label("minTemperatuur"));
item.add(new Label("maxTemperatuur"));
}
};
} catch (Exception e) {
e.printStackTrace();
}
WebMarkupContainer containerWeer = new WebMarkupContainer("containerWeer");
containerWeer.setOutputMarkupId(true);
containerWeer.add(hateView);
containerWeer.add(newview);
addOrReplace(containerWeer);
return containerWeer;
}
}