public Task {
private int id;
private Company sender;
private Company receiver;
//Getter and Setter
...
}
如您所见,我在任务类中有2个其他自定义类。一家公司有例如Adress和Directory(见下面的截图)。
答案 0 :(得分:3)
您可以创建CompanyPanel
,其中IModel<Company>
。您可以在任务类上使用PropertyModel来获取一个。 PropertyModel sender = new PropertyModel(myTask, "sender")
。然后该面板可以有两个TextField,您可以在传递的IModel上使用CompoundPropertyModel。
在表单上重复使用此面板两次。
在CompanyPanel上
public class CompanyPanel extends Panel
{
public CompanyPanel(String id, IModel<Company> model)
{
super(id, new CompoundPropertyModel(model));
add( new TextField("address"));
add( new TextField("directory"));
}
}
在docs中查找CompoundPropertyModel。这非常有用。
答案 1 :(得分:1)
创建一个用于编辑Company
类的面板,并将具有不同Model
的两个实例放入TaskPanel
public class TaskPanel extends Panel{
public TaskPanel(String id, IModel<Task> model){
super(id, model);
add(new CompanyPanel("senderCompanyPanel", new PropertyModel(model, "sender")));
add(new CompanyPanel("receiverCompanyPanel", new PropertyModel(model, "receiver")));
...
}
}
答案 2 :(得分:0)
只需创建一个面板或片段,将其模型设为IModel<Company>
,然后向您的页面添加两个实例,一个用于sender
,另一个用于receiver
。