繁体   English   中英

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

[英]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...
}

我想创建:

  • 带有mobilePhonemobilePhone_pPhone实例形式参数。
  • 带有personalPhonepersonalPhone_pPhone实例形式参数。
  • 带有workPhoneworkPhone_pPhone实例形式参数。

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

怎么做 ?

我做这个表单结构,以允许只使用注释验证我的bean: @Valid PhoneForm phoneForm在我的Spring MVC控制器中。 我正在使用列表,因为我想验证用户至少一部手机。

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

  1. 为PhoneForm中的每个电话字段创建一个字段。 如果没有别的,这将在页面上设置值。

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

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

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

  5. 使用PhoneForm getters填充页面上的字段以及验证期间。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM