0
  1. 我有一个java类:
    public Task {

        private int id;
        private Company sender;
        private Company receiver;

        //Getter and Setter
        ...
    }

如您所见,我在任务类中还有另外 2 个自定义类。一家公司有例如地址和目录(见下面的截图)。

  1. 现在我有一个包含代表公司的 2 个部分(发送者和接收者)的表单页面。我不想为这两个部分制作 2 个单独的标记和 java 代码。有什么办法可以避免这种重复?

在此处输入图像描述

4

3 回答 3

3

您可以创建一个CompanyPanel需要一个IModel<Company>. 您可以在任务类上使用 PropertyModel 来获得一个。PropertyModel sender = new PropertyModel(myTask, "sender"). 然后,面板可以有两个 TextField,您可以在传递的 IModel 上使用 CompoundPropertyModel。

在您的表单上重复使用此面板两次。

在公司面板上

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"));
    }
}

在文档中查找 CompoundPropertyModel。它真的很有用。

于 2013-01-26T10:23:19.857 回答
1

制作一个用于编辑Company类的面板,并将它的两个具有不同Models 的实例放入 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")));
    ...
  }

}
于 2013-01-26T11:58:55.290 回答
0

只需创建一个 Panel 或 Fragment,使其模型为 a IModel<Company>,然后将它的两个实例添加到您的页面,一个 for sender,另一个 for receiver

于 2013-01-26T10:14:06.107 回答