2013-08-26 2 views
0

Spring MVC 3.1을 사용하고 Bean 유효성 검사를 사용하여 유효성을 검사하는 양식의 객체 목록에 여러 필드를 바인딩하려고합니다.Spring MVC Form은 두 개 이상의 필드 그룹을 객체 목록에 바인딩합니다.

하지만 여러 필드를 단일 개체와 이러한 개체 목록에 바인딩하는 방법을 모르겠습니다.

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의 인스턴스는 mobilePhonemobilePhone_p의 params 형식입니다.
  • Phone의 인스턴스는 personalPhone이고 personalPhone_p은 params입니다.
  • Phone의 인스턴스는 workPhone이고 workPhone_p은 params입니다.

이 인스턴스는 각각 PhoneForm의 목록에 추가되어야합니다.

어떻게 수행하나요?

내 스프링 MVC 컨트롤러에서 @Valid PhoneForm phoneForm 주석을 사용하여 내 콩의 유효성을 검사 할 수 있도록이 양식 구조를 사용합니다. 사용자가 설정 한 휴대 전화를 하나 이상 확인하고 싶기 때문에 목록을 사용하고 있습니다.

답변

2

이 방법이 최선의 방법은 아니지만 여기에 귀하의 질문에 대한 해결책을 구현하는 방법이 나와 있습니다.

  1. PhoneForm의 각 전화 필드에 대한 필드를 만듭니다. 다른 방법으로 페이지에 의 값을 설정하는 것이 유용합니다.

  2. 휴대 전화 용 Phone 개체 목록을 만드는 PhoneForm 클래스 (예 : getMobilePhoneList()) 에 메서드를 만듭니다.

  3. 개인 전화 용 전화 개체 의 목록을 만드는 PhoneForm 클래스의 메서드를 만듭니다.

  4. 회사 전화 용 전화 개체 의 목록을 만드는 PhoneForm 클래스의 메서드를 만듭니다.

  5. PhoneForm getters를 사용하여 페이지의 필드와 유효성 검사 중에 필드를 채 웁니다.

  6. 필요할 때 java에서 getxxxPhoneList() 메소드를 사용하십시오.

+0

감사합니다.필자는 분리 된 필드를 사용하기 시작했지만 필자는 필자의 목록을 작성하고 여러 조건을 검증하기 위해 주석을 달아주는 getter를 만들지 않을 것이라고 생각합니다. – Aure77