java - Wicket 7 无法在表单树中找到组件

标签 java forms wicket

我正在创建一个允许管理员编辑用户信息的表单。但是,当我运行该应用程序时,我收到以下错误消息:

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/

相关文章:

java - 在盒子中找到二维点

Java代码需要限制用户输入

javascript - window.history.back() 返回两页;

Wicket 下拉选项设置默认值

java - 比较 2 个 Java 哈希集中的键值

javascript - 选择所有 HTML 复选框

javascript - 需要一个 jQuery 表单反序列化器

java - 此查询似乎为 Module_Code 插入 null 而不是下拉选项中的值

java - Apache Tapestry 和 Apache Wicket 之间的区别

java - 使用 Jackson 将 json 转为 java 对象