2017-11-12 5 views
0

Grails 명령 개체/폼에있는 맵에 중첩 레이어를 추가하려고합니다. command 객체에는 현재 otherData라는 맵이 있습니다.Grails 폼, 중첩 된 맵

Map otherData 

양식에는 제출할 때지도가 생성되는 아래 표시된 이름 지정 규칙이있는 필드가 있습니다.

<input id="birthDate" name="otheData[birthDate]" type="hidden" value=""> 
<input id="county" name="otheData[county]" type="hidden" value=""> 

그런 다음 폼을 제출할 때 내 컨트롤러에서 검색을 수행 할 데이터가 있으면 다른 맵에 바인드합니다.

if(otherData) { 
    _searchCriteria.otherData = otherData 
} 

기본적으로 또 다른 계층의 속임수를 갖고 싶기 때문에 다른 키 경로를 확인하고 데이터에 올바른 작업을 수행 할 수 있습니다. 아래 예제 :

중첩 된 맵을 나타 내기 위해 입력 이름을 코드화하려했지만 내 컨트롤러에 중첩 된 맵을 만들지 않았습니다.

<input id="birthDate" name="otheData[relative:[birthDate]]" type="hidden" value=""> 

이 키 패스

otherData.relative:[birthDate 

구조에 또 다른 레이어를 추가 할 수있는 방법이 있나요과지도를 생산?

답변

0

"otheData.relative.birthDate" 대신

+0

otheData[relative:[birthDate]]의 @devdb 덕분에 시도하지만 일반적으로 천 멋진 항목이나 otherData에 대한 참조를 포함하는 중첩 된 검증 객체로 중 결합 것이지만 그것은 트릭 위에서 설명한대로로 – JSchins

+0

하지 않았다 Map (3 번째 레이어는 테스트되지 않음)이지만 일반적으로 도메인 모델/개체 모델을 바인딩 할 수 있습니다. 컨트롤러에서'println params'를 사용하여 되돌아 오는 것을 확인하십시오 - 또한 println params.'otheData.relative.birthDate'' – Vahid

+0

만약 다른 끝에 콜렉션이 있다면'fruits' fruits [0] = 사과, 과일 [1] = 오렌지 등은 목록으로 돌아 오는 나의 콜렉션이 될 것입니다. 그런 식으로 두 번 과일의 매개 변수를 받고 목록에 바인딩하면 – Vahid