0

在 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);
    }
    
};
4

1 回答 1

0

在为 TextField 对象添加下面的代码行后,我已经解决了这个异常。

savedQuery.setDefaultModel(Model.of(queryName));

queryName 在这里是一个字符串值参数。

于 2020-11-19T21:07:41.153 回答