2012-12-28 1 views
0

grails 1.3.7을 사용하고 있습니다. 어디 categoryKey (항목이 제거 된특정 요소가 제거 된 상태로 볼 도메인 목록 전달

<g:select class="fields" valueMessagePrefix="shared.category.label" name='categoryKey' 
       value="${dealInstance?.category?.categoryKey}" 
       noSelection="${['': message(code: 'layouts.main.filter.select', default: '(Please select one)')]}" 
       from='${categoryList.list()}' optionValue="name" 
       optionKey="categoryKey"></g:select> 

나는 그것의 하나 목록을 표시 할 필요가 다음과 같이

class Category { 

    String name; 
    String categoryKey; 

    Date dateCreated 
    Date lastUpdated 

    static constraints = { 
     name(blank: false, nullable: false, maxSize:30) 
     categoryKey(blank: false, nullable: false, maxSize:30) 
    } 

    String toString() 
    { 
     return name 
    } 
} 

내가 GSP에서 범주의 목록을 표시 :

나는 다음과 같은 도메인을 속성은 OTHER와 같습니다).

def Category categoryList = Category 
//categoryList.categoryKey.remove("OTHER") How to remove here maybe? 
return [dealInstance: dealDetails, categoryList: categoryList ] 

어떻게 내 컨트롤러에이를 제거하고 GSP (마이너스 기타) 새 목록을 전달할 수 있습니다?

감사

답변

0

당신은 findAll 수집 기능을 사용하여 제거 할 개체를 확인하기 위해 폐쇄를 사용할 수 있습니다. 문서에서

:

assert [2,4] == [1,2,3,4].findAll { it % 2 == 0 } 

그래서 당신은 같은 것을 할 수 있습니다 : 당신이 좋아하는 경우에 당신은 또한 당신의보기에서 직접이 oneliner을 사용할 수 있습니다

categoryList.findAll { << return false if 'it' is of type 'OTHER', otherwise true >> } 

합니다.

+0

감사합니다. micha. <>로 다음 오류가 발생합니다. Groovy : 예기치 않은 토큰 : <@ line 48, column 41 –

+0

방금 ​​Groovy 파일에 코드를 복사 했습니까? '< .. >'안에는 내가 당신의 구조를 자세히 알지 못하기 때문에 단지 의사 코드 일뿐입니다. 당신은 자신의 필터 표현식으로 그것을 대체해야합니다. – micha

+0

그냥 그 micha relizied! 너! –

0

이렇게하려면 grails 도메인에서 toString()을 업데이트 할 수 있습니다. 된 toString

() 반환 이름 + ","+ categoryKey + ","+ lastUpdated 내가 dateCreated없이 필드를 표시하고

.

위의 코드를 사용하여 필드를 표시 할 수 있습니다.

관련 문제