我得到了一些數據進入我的propertyListview,得到了一個容器,但是當我想用Ajax更新它時,它什麼都不做!我如何使用Ajax更新PropertyListview?Wicket - Ajax PropertyListView
編輯 使用JSON解析解析從氣象站的數據,這些數據可以很多改變,所以我想在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);
}
});
}
}
更新數據的背景IM這是我在後臺做的一些代碼,它是一個虛擬的,每次都會隨機改變天氣的溫度。
Random r = new Random();
int randomInt = r.nextInt(100);
weer.add(new Weer("rain", "Mooi bewolkt", randomInt, v.getVoorspellingen()));
僞代碼是好的,但仍然沒有什麼改變的,看看我的網頁....好像我的列表心不是獲得任何新的數據..
固定這裏是人的代碼,會發現這個方便
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;
}
}
你究竟想用你的AJAX調用做什麼?交換兩個列表視圖? – kgrad 2013-03-12 15:58:08
不,根本沒有,在後臺即時通訊使用JSON解析來解析來自weatherstation的數據,該數據可以改變很多,所以我想更新propertyListview – 2013-03-12 16:09:11