I’m trying to use grails ui autocomplete component. It seems pretty simple, but I’m stuck trying to pass parameters to the ajax call. What I need is that everytime I change the select element (tempType), the ajax call to the action (searchTemplateByNameAndType) also send the value of the select field.
In my controller I have a method like:
Template.findAllByNameAndType(params.query, params.tempType).
I’ve already tried using the attribute “dependsOn” that the grails ui autocomplete provides. But I also found out the dependsOn has a known bug and doesn’t send the value to the controller. So now I am trying for a few hours to pass this param using the attribute “queryAppend”, without success. Here’s how I’m doing:
<span class="L80">
<g:select class="L80" id="tempType" name="tempType"
from="${Type?.values()}" keys="${Type.values()*.name()}"
onchange='updateTypeValue(this.value);' value=""/>
</span>
<span id="templates" class="L520">
<gui:autoComplete
id="templateName1"
class="campo L490"
resultName="result"
controller="template"
action="searchTemplateByNameAndType"
queryAppend="tempType=????"/>
</span>
Does anybody know a way to pass the select field value as a parameter into queryAppend?? I’m really stuck on that now.
Thanks!
Forgot to answer that before. But of course there’s no way I can do that and here’s why:
1 – The grails tag “gui:autoComplete” is processed in the server-side, before going to the browser.
2 – document.getElementById(‘whatever’) is processed client side, in the web browser, after the gui:autocomplete already executed. So grails already served the response to the web browser.
3 – If I try to concatenate a javascript value, like, document.getElementById(‘whatever’).value in the server side, it’s just not ready yet. It will be once the controller returns.
Worth noticing that queryAppend really does not accept concatenation via the plus operator, since once you close the quotes, that’s it, you already typed the value that will be submitted. Though, you can concatenate a value using the ${} notation, which is more grails-like.