Spring MVC 3.1 を使用してフォーム内のオブジェクトのリストに一連のフィールドをバインドし、Bean Validation を使用して検証しようとしています。
しかし、複数のフィールドを単一のオブジェクトとこれらのオブジェクトのリストにバインドする方法がわかりません。
HTML フォーム:
<form method="post" action="#" id="phoneForm">
<table>
<tr>
<td><label for="mobilePhone">Mobile</label></td>
<td>
<input type="text" class="mp_phone" name="mobilePhone" id="mobilePhone" value="" />
</td>
<td><label for="mobilePhone_p">Preferred phone number</label> <input type="radio" name="num_p" id="mobilePhone_p" value="mobilePhone_p" /></td>
</tr>
<tr>
<td><label for="personalPhone">Personal</label></td>
<td>
<input type="text" class="mp_phone" name="personalPhone" id="personalPhone" value="" />
</td>
<td><label for="personalPhone_p">Preferred phone number</label> <input type="radio" name="num_p" id="personalPhone_p" value="personalPhone_p" /></td>
</tr>
<tr>
<td><label for="workPhone">Work</label></td>
<td>
<input type="text" class="mp_phone" name="workPhone" id="workPhone" value="" />
</td>
<td><label for="workPhone_p">Preferred phone number</label> <input type="radio" name="num_p" id="workPhone_p" value="workPhone_p" /></td>
</tr>
</table>
<button type="submit" id="validateFormButton">Submit</button>
</form>
私のフォーム:
public class PhoneForm {
@NotEmpty
@Valid
private List<Phone> phonesList = new LinkedList<Phone>();
// getter/setter...
}
電話クラス:
public class Phone {
@PhoneNumber
protected String phoneNumber;
@NotNull
protected Boolean prefferedNumber;
// getter/setter...
}
作成したい:
Phone
withmobilePhone
およびmobilePhone_p
form パラメータのインスタンス。Phone
withpersonalPhone
およびpersonalPhone_p
form パラメータのインスタンス。Phone
withworkPhone
およびworkPhone_p
form パラメータのインスタンス。
このインスタンスのそれぞれをPhoneForm
のリストに追加する必要があります。
どうやってするか ?
@Valid PhoneForm phoneForm
このフォーム構造を使用して、Spring MVC コントローラーで注釈だけで Bean を検証できるようにします。ユーザーが設定した少なくとも 1 つの電話を検証したいので、リストを使用しています。