2011-08-16 49 views
0

普惠制Grails的過濾器(findAllByName)

<g:form controller="sort" action="filteren"> 
      <g:select from="${functionremote.Sort.list() }" 
      onchange="this.form.submit()" 
      value="${flash.filter}" 
      name="filter" 
      optionKey="id" 
      noSelection="['':'selecteer']"/> 
     </g:form> 

控制器

def filteren={ 
    def filterlist 
    flash.filter=params.filter 

    if(params.filter!=''){ 
     filterlist=Sort.findAllByName{params.filter) 
    }else 
     filterlist=Sort.list() 

    params.max = Math.min(params.max ? params.int('max') : 10, 100) 

    render(view:'list', model:[sortInstanceList:filterlist, sortInstanceTotal:filterlist.count()]) 
} 

有什麼不對的過濾器?

filterlist=Sort.findAllByName{params.filter) 

當我這樣做:

filterlist=Sort.findAllByName{"some string") 

它的工作原理pefectly

感謝

+0

如果你做一個println PARAMS你在看到它過濾器? – Gregg

+1

我有點注意到,你用開放的花括號(例如... findAllByName {...)而不是... findAllByName(...))...嘗試括號? – callie16

回答

0

我想,這是行不通的,因爲params.filter將是一個ID而不是名稱的,因爲你的optionKey值是ID。更改查詢到如:

filterlist = Sort.findAllById(params.filter) 

或在這種情況下

filterlist = Sort.get(params.filter) 
+0

非常感謝 – cobe