2011-12-07 3 views
2

내 응용 프로그램에 grails generate-all을 사용했습니다. 오, 내가 5 다중 선택 쇼 (총 15 책 중 15 책을 소유하고 기존 Author 편집하는 경우,선택없이 다중 선택 처리

<g:select multiple="true" ... /> 

그러나 다음 Author보기 Book 인스턴스의 수를 허용하는 다중 선택이 있습니다 선택)하고 모든 책을 선택 취소하고 저장을 클릭하면 Author은 여전히 ​​5 권의 책을 보유합니다. 제가 말할 수있는 바에 따르면, Author의 books - books 속성에 대한 책 정보는 변경되지 않습니다.

if (params?.books.size() < 1) { 
    authorInstance.books = [] 
} 

이 그것을 할 수있는 방법, 아니면 더 좋은 방법이있다 :

지금, 나는 (이 같은) 내 컨트롤러에이 테스트 할 수 있습니다?

답변

3

대부분의 예제 내가 본 사용 :

authorInstance.books.clear() 
0

은 내가 params 맵 값으로 필드를 포함하지 않는 다중 선택 목록이 바인딩 기본 데이터로 비울 수 없음을, 같은 문제가 있었다 NULL입니다.

이를 회피하기 위해, 당신은 당신의 .gsp에서이 작업을 수행 할 수 있습니다 :이 폼 요소를 게시 할 때

<g:hiddenField name="books" value="" /> 
<g:select multiple="true" name="books" /> 

는 다중 선택은 숨겨진 필드보다 우선합니다. 다중 선택이 비어 있으면 빈 문자열로 폴백합니다.

컨트롤러 동작을 변경할 수 없을 때 예쁘지는 않지만 작업이 완료되었습니다.