Apache Wicket TextField

时间:2017-10-25 11:42:11

标签: wicket textfield

美好的一天! 我创建了一些表:

List<IColumn<User, String>> columns = new ArrayList<>();

columns.add(new AbstractColumn<User, String>(new Model<String>("")) {

        @Override
        public void populateItem(Item<ICellPopulator<User>> cellItem, String componentId, IModel<User> rowModel) {
            cellItem.add(new Link<String>(componentId) {

                @Override
                public void onClick() {
                    System.out.println("editors" + rowModel.getObject().getName());
                    PageParameters parameters = new PageParameters();
                    parameters.add("id", rowModel.getObject().getId());
                    add(new EditPanel("panel", rowModel));

                }

                @Override
                public IMarkupFragment getMarkup() {
                    return Markup.of("<div wicket:id='cell'> edit </div>");
                }
            });

        }

当我点击单元格进入表格,单元格标记“编辑”时,我创建了一些面板:

public class EditPanel extends Panel {

public EditPanel(String id, IModel<User> model) {
    super(id, model);

    User user = model.getObject();
    if (user == null) {
        user = new User();
    }

    List<UserRole> list = Arrays.asList(UserRole.values());

    Form<?> form = new Form("form", new CompoundPropertyModel(user));

    TextField<String> userName = new TextField<String>("name");

    };

    add(new FeedbackPanel("feedback"));
    add(form);
    form.add(userName);

}   

}

如何设置值 TextField userName = new TextField(“name”); 从我的模型,或者如果model == null,设置我需要的任何文本? 谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用Wicket 7或更早版本,则可以使用:

TextField<String> userName = new TextField<String>("name", new PropertyModel(model, "username"));

假设usernameUser的属性。

使用Wicket 8.x,您可以改为使用LambdaModel

答案 1 :(得分:0)

Heyy, 我认为问题是因为你传递的是对象而不是模型。

正确的方法是使用CompoundPropertyModel传递,就像你一样。在这种情况下,它比PropertyModel更好。

尝试这样做:

...
    if (model.getObject() == null) {
        model.setObject(new User());
    }
 Form<?> form = new Form("form", new CompoundPropertyModel(model));
...
希望能帮到你。