我正在使用检票向导让用户采取多个步骤进行注册。
但不知何故我得到了这个错误:
最后一个原因:尝试在组件的空模型上设置模型对象:wizard:form:view:sprachenDrop
WicketMessage:接口 org.apache.wicket.markup.html.form.IFormSubmitListener 的 onFormSubmitted 方法针对 [Form [Component id = form] ] 在组件 [Form [Component id = form]] 上抛出异常
这个来自堆栈跟踪的片段:
根本原因:
java.lang.IllegalStateException:尝试在组件的空模型上设置模型对象:wizard:form:view:sprachenDrop at org.apache.wicket.Component.setDefaultModelObject(Component.java:3038) at org.apache.wicket .markup.html.form.FormComponent.setModelObject(FormComponent.java:1577) 在 org.apache.wicket.markup.html.form.FormComponent.updateModel(FormComponent.java:1098) 在 org.apache.wicket.markup.html .form.Form$FormModelUpdateVisitor.component(Form.java:230) 在 org.apache.wicket.markup.html.form.Form$FormModelUpdateVisitor.component(Form.java:200)
参考这篇文章,我尝试创建一个类来保存我需要的信息,但是没有用,我把这个教程当作基础。在 Wicket 的帮助下,我尝试了这段代码,因此创建了一个 IClusterable 类来保存信息。错误仍然相同。由于DropDownChoice
带有一个能够将列表作为模型保存的构造函数,因此我认为我的代码应该可以工作。
public class StepPersoenlicheDaten extends WizardStep{
private static final long serialVersionUID = 1L;
private RequiredTextField<String> name, vorname, strasse, ort, telefonNr;
private DropDownChoice<String> korrespondenzsprache;
private List<String> sprachen = new ArrayList<String>();
public StepPersoenlicheDaten(WizardModel model) {
super(new ResourceModel("daten.title"), new ResourceModel("daten.summary"));
init(model);
java.util.Collections.addAll(sprachen, "Deutsch","English","Français","Italiano");
add(name = new RequiredTextField<String>("name", Model.of("")));
add(vorname = new RequiredTextField<String>("vorname", Model.of("")));
add(strasse = new RequiredTextField<String>("strasse", Model.of("")));
add(ort = new RequiredTextField<String>("ort", Model.of("")));
add(telefonNr = new RequiredTextField<String>("telefonNr", Model.of("")));
add(korrespondenzsprache = new DropDownChoice<String>("sprachenDrop", sprachen));
}
}
当我单击向导上的完成(或下一步)按钮时出现错误。我不知道我还能尝试解决什么问题。
编辑:
IModel<Collection<? extends String>> langs = Model.of(sprachen);
add(korrespondenzsprache = new DropDownChoice<String>("sprachenDrop", langs));
没有被接受。