Java 用Wicket中DB的值填写表格
我有一个具有以下逻辑的表单:Java 用Wicket中DB的值填写表格,java,wicket,Java,Wicket,我有一个具有以下逻辑的表单: TextField name = new TextField<>("name", Model.of("")); TextField surname = new TextField<>("surname", Model.of("")); TextField mobile = new TextField<>("mobile", Model.of("")); TextField phone = new TextField<>
TextField name = new TextField<>("name", Model.of(""));
TextField surname = new TextField<>("surname", Model.of(""));
TextField mobile = new TextField<>("mobile", Model.of(""));
TextField phone = new TextField<>("phone", Model.of(""));
HiddenField id = new HiddenField<>("id", Model.of(""));
EmailTextField email = new EmailTextField("email", Model.of(""));
Form form = new Form("formContact") {
@Override
protected void onSubmit() {
super.onSubmit();
Contact contact = new Contact();
contact.setName(name.getValue());
contact.setEmail(email.getValue());
contact.setSurname(surname.getValue());
contact.setMobile(mobile.getValue());
contact.setPhone(phone.getValue());
service.save(contact);
}
};
form.add(id);
form.add(email.setRequired(false));
form.add(name.setRequired(true));
form.add(surname.setRequired(true));
form.add(mobile.setRequired(true));
form.add(phone.setRequired(false));
add(form);
当客户希望插入新联系人时,我会使用该代码,并且它可以正常工作
我现在需要的是处理现有联系人的更新,所以我只需要用已知联系人实例中的值填充现有表单:
联系人=service.get1
我该怎么做
谢谢您应该在表单组件的模型中使用现有联系人的数据 例如,TextField name=新TextField name,新PropertyModelcontact,name
另请参见CompoundPropertyModel。我会将CompoundPropertyModel用于表单,这样它将在模型更改时更新,也不需要将数据设置到字段。发送模型创建页面或模型时,可以发送合同实例,甚至可以发送空的合同实例。假设您的类名是MyPanel,然后是构造函数
MyPanel(String id, IModel<Contract> model) {
super(id, model);
}
现在,当您创建表单时,您可以使用CompoundPropertyModel benefitsinContract类中的字段name、姓氏、mobile等以及公共getter和setter
@Override
protected void onInitialize() {
super.onInitialize();
Form<Contract> form = new Form("formContact", new CompoundPropertyModel(getModel()){
@Override
protected void onSubmit() {
super.onSubmit();
service.save(getModelObject());
}
});
add(form);
form.add(new TextField<>("name").setRequired(true));
form.add(new TextField<>("surname").setRequired(true));
form.add(new TextField<>("mobile").setRequired(true));
form.add(new TextField<>("phone").setRequired(false));
form.add(new HiddenField<>("id"));
form.add(new EmailTextField("email").setRequired(false));
让我们通过点击按钮来更新合同
form.add(new AjaxLink<Void>("updateContract"){
@Override
public void onClick(AjaxRequestTarget target) {
form.setModelObject(service.get(1));
target.add(form);
}
});