2011-08-17 2 views
1

나는 입력 요소를 구체적으로 정렬해야하는 양식이 있습니다. 따라서 내 양식은 다음과 같습니다.Grails 명령어 객체와 입력 이름 값

<input type="text" name="name"/> 
<select name="contacts.first">...</select> 
<select name="contacts.second">...</select> 
... 

이 양식의 유효성을 검사하는 데 사용하려는 명령 개체가 있습니다. 그러나 올바르게 맵핑 할 수없는 것 같습니다. 내 명령 개체는 다음과 같습니다 : 나는 cmd.contacts 볼 때, 널 (null)입니다

def update = { MyCommand cmd -> 
    if (cmd.validate()) { 
     /* ... */ 
    } 
} 

:

@Validatable 
class MyCommand { 
    def name 
    def contacts 

    static constraints = { /* ... */ } 
} 

내 컨트롤러 액션처럼 보인다. 각각의 이름을 contacts.first 대신 contacts으로 그냥 지정하면 값의 배열이 예상대로 표시되지만 브라우저에 의존하여 이러한 항목이 특정 순서인지 확인하고 싶지 않습니다. 이 작품 제작에 대한 제안? 올바른 순서가 중요합니다.

답변

2

원래 아이디어 : 명령 개체에 대한 그래서 http://stateyourbizness.blogspot.com/2009/02/binding-to-collection-fields-on-command.html

당신은 사용할 수 있습니다

import org.apache.commons.collections.FactoryUtils; 
import org.apache.commons.collections.ListUtils; 

class MyCommand { 
    def name 
    List contacts = ListUtils.lazyList([], FactoryUtils.constantFactory('')) 
    /* ... */ 
} 

을 그리고 당신의 HTML 모양이 같은 :

<input type="text" name="name"/> 
<select name="contacts[0]">...</select> 
<select name="contacts[1]">...</select>