我正在创建一个允许管理员编辑用户信息的表单。但是,当我运行该应用程序时,我收到以下错误消息:
Last cause: Unable to find component with id 'editUserFirstname' in [Form [Component id = userEditForm]]
Expected: 'userEditForm:editUserFirstname'.
Found with similar names: ''
但据我所知,我的 editUserFirstname 字段受 userEditForm 限制。
这是我的代码...
EditUserPage.html
<form wicket:id="userEditForm" class="userEditForm">
<fieldset>
<legend>
<wicket:message key="userEditLegendKey"></wicket:message>
</legend>
<table id="userEditFormTable">
<tr>
<td>
<label for="editUserFirstname">
<wicket:message key="firstnameKey"></wicket:message>
</label>
<input wicket:id="editUserFirstname" id="editUserFirstname" type="text" size="40"/>
<label for="editUserSurname">
<wicket:message key="surnameKey"></wicket:message>
</label>
<input wicket:id="editUserSurname" id="editUserSurname" type="text" size="40"/>
<label for="editUserUsername">
<wicket:message key="usernameKey"></wicket:message>
</label>
<input wicket:id="editUserUsername" id="editUserUsername" type="text" size="40"/>
</td>
</tr>
<tr>
<td>
<input type="submit" wicket:id="savebutton" value="save"/>
<input type="submit" wicket:id="cancelbutton" value="cancel">
</td>
</tr>
</table>
</fieldset>
</form>
EditUserPage.java
public class EditUserPage extends BasePage {
StringValue ormId;
Sysuser sysuser;
/**
* Constructs ...
*
* @param parameters The class page parameters.
*/
public EditUserPage(PageParameters parameters) {
super(parameters);
ormId = parameters.get("ormId");
}
@Override
protected void onInitialize() {
super.onInitialize();
try {
sysuser = Sysuser.getSysuserByORMID(ormId.toInt());
} catch (PersistentException e) {
e.printStackTrace();
}
Form form = new Form("userEditForm") {
@Override
protected void onSubmit() {
}
};
form.setDefaultModel(new CompoundPropertyModel<Object>(this));
form.add(new TextField("userEditLegendKey").setRequired(true).setLabel(new Model<String>("User Information")));
form.add(new TextField("firstnameKey").setRequired(true).setLabel(new Model<String>("Firstname")));
form.add(new TextField("surnameKey").setRequired(true).setLabel(new Model<String>("Surname")));
form.add(new TextField("usernameKey").setRequired(true).setLabel(new Model<String>("Username")));
form.add(new Button("savebutton"));
form.add(new Button("cancelbutton"));
final FeedbackPanel feedback = new FeedbackPanel("feedback");
add(feedback);
add(form);
}
}
最佳答案
在 HTML 中,您有 <input wicket:id="editUserFirstname"
在Java代码中form.add(new TextField("firstnameKey")
。 id 必须相同。
关于java - Wicket 7 无法在表单树中找到组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344505/