0

我正在尝试使用 grails ui 自动完成组件。看起来很简单,但我一直在尝试将参数传递给 ajax 调用。我需要的是每次更改选择元素(tempType)时,对操作(searchTemplateByNameAndType)的ajax调用也会发送选择字段的值。在我的控制器中,我有一个方法,例如:

Template.findAllByNameAndType(params.query, params.tempType).

我已经尝试过使用 grails ui 自动完成提供的属性“dependsOn”。但我也发现 dependsOn 有一个已知的错误,并且不会将值发送到控制器。所以现在我尝试了几个小时使用属性“queryAppend”传递这个参数,但没有成功。这是我的做法:

<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>

有人知道将选择字段值作为参数传递给 queryAppend 的方法吗?我现在真的很坚持。

谢谢!

4

2 回答 2

0

你能用吗

    document.getElementById(\'tempType\').value

像这样:

    <gui:autoComplete 
    id="templateName1"
    class="campo L490"
    resultName="result"
    controller="template"
    action="searchTemplateByNameAndType"
    queryAppend="tempType=" + document.getElementById(\'tempType\').value/>
于 2012-04-15T06:42:36.627 回答
0

之前忘记回答了。但是我当然无法做到这一点,原因如下:

1 - grails 标记“gui:autoComplete”在服务器端处理,然后转到浏览器。

2 - document.getElementById('whatever') 在客户端处理,在 web 浏览器中,在 gui:autocomplete 已经执行之后。因此,grails 已经为 Web 浏览器提供了响应。

3 - 如果我尝试在服务器端连接一个 javascript 值,例如 document.getElementById('whatever').value,它还没有准备好。一旦控制器返回。

值得注意的是 queryAppend 确实不接受通过加号运算符的连接,因为一旦关闭引号,就是这样,您已经输入了将提交的值。不过,您可以使用 ${} 表示法连接一个值,这更像 grails。

于 2012-07-28T21:43:31.177 回答