0
  1. 私はJavaクラスを持っています:
    public Task {

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

        //Getter and Setter
        ...
    }

ご覧のとおり、タスククラスには他に2つのカスタムクラスがあります。また、会社には、たとえば住所とディレクトリがあります(下のスクリーンショットを参照)。

  1. これで、会社を表す2つのセクション(送信者と受信者)を持つフォームページができました。これらの2つのセクションに2つの別個のマークアップとJavaコードを作成したくありません。この重複を回避する方法はありますか?

ここに画像の説明を入力してください

4

3 に答える 3

3

CompanyPanelをとるを作成できますIModel<Company>。タスククラスでPropertyModelを使用して取得できます。PropertyModel sender = new PropertyModel(myTask, "sender")。パネルには、渡されたIModelでCompoundPropertyModelを使用できる2つのTextFieldを含めることができます。

フォームでこのパネルを2回再利用します。

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

ドキュメントでCompoundPropertyModelを検索します。本当に便利です。

于 2013-01-26T10:23:19.857 に答える
1

Companyクラスを編集するためのパネルを作成し、異なるModelsを持つ2つのインスタンスを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

パネルまたはフラグメントを作成し、そのモデルをIModel<Company>にして、ページにその2つのインスタンスを追加します。1つは用sender、もう1つは用receiverです。

于 2013-01-26T10:14:06.107 に答える