UrlTextField和CompoundPropertyModel

时间:2014-02-28 17:09:36

标签: html5 wicket

我有一个检票口页面,说SignUpCustomerPage extends WebPage。它的默认模型为new CompoundPropertyModel<Customer>(customer),其中customer是页面类的私有属性。

我将各种HTML输入字段添加到页面形式中,但在添加HTML5网址输入时,它需要IModel<String>作为第二个参数。实施例

model = new CompoundPropertyModel<Customer>(customer);

Form f = new Form();
f.add(new UrlTextField("website", model));
add(f);

如何将复合属性模型与URL文本字段组合在一起的任何示例?

2 个答案:

答案 0 :(得分:0)

我认为不可能使用CompoundPropertyModel。您可以改为使用PropertyModel

f.add(new UrlTextField("website", new PropertyModel<String>(customer, "website"));

答案 1 :(得分:0)

您可以使用复合属性模型使用复合属性模型来访​​问对象内部的属性,如下所示:“textfieldid.property”因此,在以下示例中,您可以使用“customer.website”获取/设置Customer对象内的网站。这个id也应该在html中用于表单输入wicket:id。

// Customer class
public class Customer {
    private String website;
    // Getter and setter for website
}

// Webpage
public SignUpCustomerPage extends WebPage {

    private Customer customer;

    public SignUpCustomerPage() {

        customer = new Customer();

        CompoundPropertyModel<Customer> cpm = new CompoundPropertyModel<Customer>(customer);   

        Form<Customer> form = new Form("formid", cpm) {
            @Override
            public onSubmit(){ System.out.println(getModelObject().getWebsite())}
        };
        form.add(new UrlTextField("customer.website"));
        add(form);
    }
}