0

grails ui autocomplete コンポーネントを使用しようとしています。かなり単純に思えますが、パラメーターを ajax 呼び出しに渡そうとしています。私が必要とするのは、選択要素 (tempType) を変更するたびに、アクション (searchTemplateByNameAndType) への ajax 呼び出しも選択フィールドの値を送信することです。私のコントローラーには、次のようなメソッドがあります。

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

grails ui autocomplete が提供する属性「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>

selectフィールドの値をパラメーターとして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') は、gui:autocomplete が既に実行された後、Web ブラウザーでクライアント側で処理されます。したがって、grails はすでに Web ブラウザーに応答を提供しています。

3 - サーバー側で document.getElementById('whatever').value のような JavaScript 値を連結しようとすると、まだ準備ができていません。コントローラーが戻ってきた時点になります。

queryAppend は実際にはプラス演算子による連結を受け入れないことに注意してください。これは、引用符を閉じると、送信される値がすでに入力されているためです。ただし、より grails に似た ${} 表記を使用して値を連結できます。

于 2012-07-28T21:43:31.177 に答える