[英]Spring MVC Form binding a group of two or more fields into a list of objects
我正在尝试使用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...
}
我想创建:
mobilePhone
和mobilePhone_p
的Phone
实例形式参数。 personalPhone
和personalPhone_p
的Phone
实例形式参数。 workPhone
和workPhone_p
的Phone
实例形式参数。 应将每个实例添加到PhoneForm
的列表中。
怎么做 ?
我做这个表单结构,以允许只使用注释验证我的bean: @Valid PhoneForm phoneForm
在我的Spring MVC控制器中。 我正在使用列表,因为我想验证用户至少一部手机。
这可能不是最好的技术,但这是我如何为您的问题实现解决方案。
为PhoneForm中的每个电话字段创建一个字段。 如果没有别的,这将在页面上设置值。
在PhoneForm类(可能称为getMobilePhoneList())中创建一个方法,该方法为移动电话创建Phone对象列表。
在PhoneForm类中创建一个方法,该方法为个人电话创建Phone对象列表。
在PhoneForm类中创建一个方法,为工作电话创建Phone对象列表。
使用PhoneForm getters填充页面上的字段以及验证期间。
在需要时使用java中的getxxxPhoneList()方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.