在 wicket 8.x 版本中单击 IndicatingAjaxButton 时出现以下错误。
错误 | 发生异常:java.lang.IllegalStateException:尝试在没有模型的组件上设置模型对象!将 IModel 传递给构造函数或使用 #setDefaultModel(new SomeModel(object))。组件:org.apache.wicket.IGenericComponent.setModelObject(IGenericComponent.java:81) 中 org.apache.wicket.markup.html 中 org.apache.wicket.Component.setDefaultModelObject(Component.java:2999) 中的 form:savedQuery。 form.FormComponent.updateModel(FormComponent.java:1100) 在 org.apache.wicket.markup.html.form.Form$FormModelUpdateVisitor.component(Form.java:223) 在 org.apache.wicket.markup.html.form。 Form$FormModelUpdateVisitor.component(Form.java:193) at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274) at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits. java:262) 在 org.apache.wicket.util.visit.Visits。
final DropDownChoice<String> listSites = (DropDownChoice<String>) new DropDownChoice<String>("savedQueries", new PropertyModel<String>(TestPage.this.getModel(), "selectedValue"), savedQueries).add(new FormComponentUpdatingBehavior() {
private static final long serialVersionUID = 1L;
protected void onUpdate() {
// Update logic
}
protected void onError(RuntimeException ex) {
super.onError(ex);
}
});
listSites.setOutputMarkupId(true);
add(listSites);
TextField savedQuery = new TextField<>("savedQuery"); // CHECK LATER
savedQuery.setOutputMarkupId(true);
add(savedQuery);
final IndicatingAjaxButton deleteMcb = new IndicatingAjaxButton("delete") {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
String message=null;
List<String> savedQueries = null;
try{
//on submit process logic
}catch(Exception e){
e.printStackTrace();
}
listSites.setChoices(savedQueries);
listSites.setModelObject(null);
target.add(listSites);
savedQuery.setModelObject(null);
target.add(savedQuery);
target.add(feedback);
error(message);
}
};