【问题标题】:grails ui autocomplete: how to pass other fields?grails ui自动完成:如何传递其他字段?
【发布时间】:2012-07-29 05:43:31
【问题描述】:

我正在尝试使用 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 的方法吗?我现在真的很坚持。

谢谢!

【问题讨论】:

    标签: grails autocomplete grails-plugin


    【解决方案1】:

    你能用吗

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

    像这样:

        <gui:autoComplete 
        id="templateName1"
        class="campo L490"
        resultName="result"
        controller="template"
        action="searchTemplateByNameAndType"
        queryAppend="tempType=" + document.getElementById(\'tempType\').value/>
    

    【讨论】:

    • 嗯。我试过了,但它给出了一个异常:错误 500(内部服务器错误。消息:在属性名称后期待 '=')。这是可以理解的。当您关闭“tempType=”上的引号时,就是这样,这就是标签属性的结尾,对吧?所以剩下的,我的意思是 + document.get... 是语法错误。还是卡住了。
    【解决方案2】:

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

    1 - grails 标签“gui:autoComplete”在服务器端处理,然后进入浏览器。

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2023-03-14
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多