gpt4 book ai didi

java - Spring MVC Form 将一组两个或多个字段绑定(bind)到对象列表中

转载 作者:行者123 更新时间:2023-12-02 06:47:40 26 4
gpt4 key购买 nike

我正在尝试使用 Spring MVC 3.1 将一堆字段绑定(bind)到表单中的对象列表中,并使用 Bean Validation 进行验证。

但我不知道如何将多个字段绑定(bind)到单个对象以及这些对象的列表中。

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...
}

我想创建:

  • 带有 mobilePhonemobilePhone_p 表单参数的 Phone 实例。
  • 带有 personalPhonepersonalPhone_p 表单参数的 Phone 实例。
  • 带有 workPhoneworkPhone_p 表单参数的 Phone 实例。

每个实例都应添加到 PhoneForm 的列表中。

如何做到这一点?

我使用这个表单结构来允许仅使用注释验证我的bean:在我的Spring MVC Controller 中的@Valid PhoneFormphoneForm。我使用列表是因为我想验证用户设置的至少一部手机。

最佳答案

这可能不是最好的技术,但以下是我为您的问题实现解决方案的方法。

  1. 为 PhoneForm 中的每个电话字段创建一个字段。 如果没有其他目的,这将很有用,可以设置该值 您的页面。

  2. 在 PhoneForm 类中创建一个方法(可能称为 getMobilePhoneList()) 为移动电话创建一个 Phone 对象列表。

  3. 在 PhoneForm 类中创建一个方法来创建 Phone 对象列表 对于个人电话。

  4. 在 PhoneForm 类中创建一个方法来创建 Phone 对象列表 用于工作电话。

  5. 使用 PhoneForm getter 填充页面上和验证期间的字段。

  6. 需要时使用 java 中的 getxxxPhoneList() 方法。

关于java - Spring MVC Form 将一组两个或多个字段绑定(bind)到对象列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com