2012-04-14 11 views
0

私はgrails ui autocompleteコンポーネントを使用しようとしています。それはかなりシンプルなようですが、私はajax呼び出しにパラメータを渡そうとしているつもりです。私が必要とするのは、select要素(tempType)を変更するたびに、アクション(searchTemplateByNameAndType)へのajax呼び出しもselectフィールドの値を送信するということです。私のコントローラで 私のような方法があります:私はすでにのGrails UIの自動補完が提供する「DEPENDSON」属性を使用してみましたgrails ui autocomplete:他のフィールドを渡す方法?

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

を。しかし、私は、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へのパラメータとして選択フィールドの値を渡す方法を知っています?私は本当に今それに固執しています。

ありがとうございます!

答えて

0

は、その前に答えるのを忘れていました。しかし、もちろんこれはできません。理由は次のとおりです。

1 - ブラウザに行く前に、grailsタグ "gui:autoComplete"がサーバー側で処理されます。

2 - document.getElementById( 'whatever')は、gui:autocompleteがすでに実行された後、Webブラウザでクライアント側で処理されます。だから、grailsはすでにWebブラウザへの応答を提供していました。

3 - サーバー側のdocument.getElementById( 'whatever')。valueのようなjavascript値を連結しようとすると、まだ準備ができていません。コントローラーが戻ったらそれが表示されます。

あなたが引用符を閉じると、queryAppendは実際にはplus演算子による連結を受け付けないことに注意してください。それはすでに提出される値をタイプしたものです。 $ {}の表記法を使って値を連結することはできますが、これはより多くのグレーズのようなものです。

0

あなたはこのよう

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

を使用することができます。

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

Hmm。私はそれを試して、それは例外を与えます:エラー500(内部サーバーのエラーメッセージ:予期する '='属性名の後)。 それは分かりやすい理由です。 "tempType ="の引用符を閉じると、それがタグ属性の終わりです残りの部分は、+ document.get ...は構文エラーです。まだ立ち往生。 –

関連する問題