propertyListviewにデータを入力し、その周りにコンテナーを取得しましたが、Ajaxで更新したい場合は、何もしません。PropertyListviewをAjaxで更新するにはどうすればよいですか?
気象観測所からのデータを解析するために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);
}
});
}
}
これは私がバックグラウンドで行ういくつかのコードであり、天気の温度を毎回乱数で変更するダミーです。
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;
}
}