2017-02-16 3 views
0

は、私は、ユーザーのさまざまなタイプの複数のフォームのモデルオブジェクトとして、このユーザーを使用していますSpring MVCでモデルを複数のフォームに再利用するには?

public class User { 
private String name; 
private String age; 
private Address address; 
private Contact contact; 
// getters and setters 
} 
class Address { 
private String address1; 
private String address2; 
private String state; 
private String city; 
// getters and setters 
} 
class Contact { 
private String phone; 
private String fax; 
// getters and setters 
} 

モデルクラスの下に持っています。

  1. 特定のユーザータイプでは、連絡先はオプションでもなくてもかまいません。
  2. address2のアドレス2は、オプションです。一部のユーザータイプでは必須ではありません。

私の考えは、1つのコントローラがこのフォーム/ページを複数のユーザータイプに対して処理するようにすることです。

  • 上記のシナリオを処理するには、このモデルをどのように使用しますか?
  • このモデルのバリデータを書き込む方法は?

答えて

1

必要に応じて1つのフォームを使用できます。

いくつかの注釈をフィールドに直接追加することができます。すべてのユーザータイプに必須のアドレス1の場合は@NotNullです。

ご利用クラスには住所と連絡先

public class User { 
    ... 
    @Valid 
    private Address address; 
    @Valid 
    private Contact contact; 
    ... 
} 

を検証するために、マーカー注釈@Validを持っている必要がありますし、クラスレベルの制約の注釈および/またはクロスパラメータ制約を定義することができます。 (参照)。

ユーザークラスにカスタム制約を付ける必要があります。カスタム制約では、ユーザータイプを確認したり、必要なフィールドが正しく入力されているかどうかをチェックしたりできます。

+0

優れたソリューションをお寄せいただきありがとうございます。モデル属性のオブジェクトが存在しない場合、JSPでフォーム要素を非表示にする方法の提案はありますか?例、AddressオブジェクトがUserオブジェクトに追加されていない場合は、JSPのAddressセクションを非表示にしますか? – Vel

+1
+0

ありがとうございます。それは本当に助けになりました。 – Vel

関連する問題