大家好我似乎有一個問題,我的檢票口項目。檢票窗口與列表視圖
基本上我有一個AjaxLink使單擊應該更新可裝載Detatcheable模式,並重新渲染更新的模型
這裏的結果列表視圖時,我的代碼
package com.blackwell.wicket.manager;
public class ManageExercise extends BaseManagerPage {
private static final long serialVersionUID = -3241765837700606142L;
private ModalWindow mwAddExercise;
private Integer searchId;
private String name;
private String complexity;
private LoadableDetachableModel<List<Exercise>> modelList;
@SpringBean
ExerciseJdbc exerciseJdbc;
public ManageExercise() {
add(mwAddExercise = new ModalWindow("mwAddExercise"));
final WebMarkupContainer wmc = new WebMarkupContainer("wmc");
wmc.setOutputMarkupId(true);
modelList = exerciseModel(searchId, name, complexity);
Form<String> searchForm = new Form<String>("searchForm");
searchForm.add(new TextField<Integer>("searchId",
new PropertyModel<Integer>(this, "searchId")));
searchForm.add(new TextField<String>("searchName",
new PropertyModel<String>(this, "name")));
// searchForm.add(new DropDownChoice<String>("searchComplexity",
// new PropertyModel<String>(this, "complexity")));
searchForm.add(new AjaxLink<String>("searchSubmit") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
modelList = exerciseModel(searchId, name, complexity);
target.add(wmc);
}
});
add(searchForm);
ListView<Exercise> lvExercise = new ListView<Exercise>("lvExercise",
modelList) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem<Exercise> item) {
final Exercise model = item.getModelObject();
item.add(new Label("id", Integer.toString(model.getId())));
item.add(new Label("name", model.getName()));
item.add(new ExternalLink("demoUrl", model.getDemoUrl(), model
.getDemoUrl()));
item.add(new Label("complexity", model.getComplexity()
.getLevel()));
item.add(new AjaxLink<String>("edit") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
renderAddExercise(item.getModelObject());
mwAddExercise.show(target);
}
});
item.add(new AjaxLink<String>("delete") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
exerciseJdbc.disableExercise(model);
target.add(wmc);
}
});
}
};
wmc.add(lvExercise);
add(wmc);
mwAddExercise.setWindowClosedCallback(new WindowClosedCallback() {
private static final long serialVersionUID = 1L;
public void onClose(AjaxRequestTarget target) {
target.add(wmc);
}
});
AjaxLink<String> addExercise = new AjaxLink<String>("addExercise") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
renderAddExercise(new Exercise());
mwAddExercise.show(target);
}
};
add(addExercise);
}
private LoadableDetachableModel<List<Exercise>> exerciseModel(
final Integer id, final String name, final String complexity) {
LoadableDetachableModel<List<Exercise>> exercideModel = new LoadableDetachableModel<List<Exercise>>() {
private static final long serialVersionUID = 1L;
protected List<Exercise> load() {
return exerciseJdbc.fetchAllExercises(id, name, null,
complexity);
}
};
return exercideModel;
}
private void renderAddExercise(Exercise exercise) {
mwAddExercise.setContent(new AddExercisePanel(mwAddExercise
.getContentId(), exercise, mwAddExercise));
}
public Integer getSearchId() {
return searchId;
}
public void setSearchId(Integer id) {
this.searchId = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComplexity() {
return complexity;
}
public void setComplexity(String complexity) {
this.complexity = complexity;
}
}
現在,問題出在點擊鏈接時不會發生。
我已經確定在load()方法中運行的方法返回我期望的正確參數傳遞時的方法。
modelList = exerciseModel(searchId, name, complexity);
你正在創建你的LoadableDetachableModel
的新實例,讓您的ListView
仍然有以前的一個:
當你這樣做的任何幫助,將不勝感激
感謝
好的,你能告訴我接受的方式是什麼嗎? – user1383163
modelList.setObject(...) – jordeu