GrailsにjQueryを追加する
実際、
Grailsの AJAXに問題はありません。コントローラーはJSONデータを安全に返すことができ、GSPページは対応する
補助タグを使用でき
ます 。
デフォルトでは、GrailsはPrototype JSと友達です。 ただし、
手首を軽く動かすだけでjQueryサポートプラグインをインストールできます。
grails install-plugin jquery
JQuery 1.4.xがインストールされます。 次に、jQueryをGrailsで「JavaScriptプロバイダー」として宣言する必要があります。 この場合、すべてのGrails組み込みタグはjQueryを介して機能し始めます。
grails-app / Config.groovyに次の行を追加し
ます 。
grails.views.javascript.library="jquery"
アプリケーションのすべてのページでjQueryの使用を開始するため、HEADセクションのメインレイアウトファイル(デフォルトでは
grails-app / views / layouts / main.gsp )にすぐに追加します。
<html>
<head>
...
<g:javascriptライブラリ= "jquery" />
...
</ head>
...
</ html>
これで、アプリケーションの各ページにjQueryが自動的にロードされます。
jQueryで何かを書く
たとえば、次のようなデザインをすでに獲得しています。
<div id = "ajaxContainer">ここには何もありません。</ div>
<g:remoteLink action = "show" id = "1" update = "ajaxContainer">更新!</ g:remoteLink>
ランタイムで見ると、
jQuery.ajax()関数が暗黙的に使用されていることがわかります。
web-app / js / application.jsを見ると、生成されたAJAXインジケーターコード(
grails create-app
を使用)がPrototype用に記述されていることがわかります。 組み込みのディスプレイは(私の好みのために)曲がっているように見えますが、実際に動作させたい場合は、jQueryでコードを書き直すことができます。
jQuery(ドキュメント).ready(関数(){
jQuery(ドキュメント).ajaxStart(関数(){
$( '#スピナー')。show();
});
jQuery(ドキュメント).ajaxStop(function(){
$( '#スピナー')。fadeOut(500);
});
});
コントローラーの作成
最後に、AJAXの操作に適したコントローラーを作成します。 たとえば、コントローラーからJSON形式の乱数を返します。
def random = {
def max = params.int( 'max')
render(contentType: "text / json"){
rnd =新しいランダム()。nextInt(最大)
}
}
ここでは、Grails 1.2.xの
新しい JSONビルダー
バージョンを使用します。 コントローラーの結果は、フォーム
{rnd: 34}
JavaScript配列になります。たとえば、次のように使用できます。
<p>
乱数:
<input type = "text" name = "rnd" id = "out" value = "" />
<g:remoteLink action = "random"
params = "[max:100]"
onSuccess = "\ $( '#out')。val(data.rnd);">生成!</ g:remoteLink>
</ p>
ここでは、JSONの結果(この場合は
data
変数に該当します)から、
rnd
値が選択され、テキストフィールドに入力されます。
括弧内で、あるJavaScriptプロバイダーを別のJavaScriptプロバイダーに置き換える「透明性」は、特定の時点までしか機能しないことに注意してください。 Grailsの組み込みAJAXタグを超えてjQuery関数の使用を開始すると(上記の例のように)、すぐに他のプロバイダーとの互換性が失われます。