GrailsUIオートコンプリートタグを呼び出すカスタムtaglibに次のコードがあります。
def renderAutoComplete(uicName,isDisabled,theValue) {
params.tableId = 3 // THIS ISN'T AVAILABLE TO AUTO COMPLETE ACTION
out << gui.autoComplete(id:uicName,resultName:"lookUpData",controller:"lookupTable",action:"autoCompleteJSON") {}
}
オートコンプリートを設定するために呼び出されるアクションは次のとおりです。
def autoCompleteJSON = {
def lookupTable = LookupTable.get(3) // PARAM NEEDS TO BE SET IN TAGLIB
def list = LookupValue.findAllByLookupTableAndThevalueLike(lookupTable,"${params.query}%")
def jsonList = list.collect { [ id: it.id, name: it.thevalue ] }
def jsonResult = [
lookUpData: jsonList
]
render jsonResult as JSON //render only works in a controller
}
ハードコードされたものを使用すると、すべてが正常に機能します。
def lookupTable = LookupTable.get(3)
しかし、私が必要としているのは:
def lookupTable = LookupTable.get(params.tableId)
params.tableIdはオートコンプリートには使用できません。
では、taglibにパラメータを設定するにはどうすればよいですか?
アップデート
gui.autocompleteは、私が気付いていなかった2つのパラメーターを提供していることがわかりました。filterByとfilterは、フィルターパラメーターをコントローラーに渡す必要性に正確に使用できます。だから今私はします:
out << gui.autoComplete(id:uicName,resultName:"lookUpData",controller:"lookupTable",action:"autoCompleteJSON",filterBy:"lookupTable",filter:"${theTagtype.lookupTable.id}", queryDelay:"0.5", value:"${theValue}") {}
そしてそれは完璧に動作します。だから私の当面の問題は解決されました。しかし、一般的な質問は残っています:taglibにパラメータを設定するにはどうすればよいですか?