2011-07-11 3 views
1

Grailsの新機能ですが、AJAXを使用してコントローラからテンプレートにオブジェクト/モデルを取得しようとしています。私はメッセージボックスのテンプレートにアクセスできるようにSMSプロパティを作成したいと思いますが、これは常にnull値を返します。誰も私にこれを手伝ってもらえますか?すべての答えは、ここに私の現在のコードをいただければ幸いです。Grails:AJAXレスポンスからオブジェクト/モデルを取得する

私のクライアントで

<g:form> 
    <label for="id">Sms ID </label> 
    <g:textField name="id" /> 
    <g:submitToRemote value="search" update="msgBox" 
        url="[controller:'sms', action:'send']"/> 
</g:form> 
<g:render template="messageBox" model="${[sms:sms]}/> 

私のコントローラ

SmsController{ 

def send = { 
    def sms = new Sms(...) 
    //assume properties have been set 
    ... 
    ... 
    render(template: messageBox, model:[sms:sms]) 
} 
} 

と私の_messageBox.gsp

<div id="msgBox"> 
    <span>Sms Property 1: ${sms?.property1}</span> 
    <span>Sms Property 2: ${sms?.property2}</span> 
    <span>Sms Property 3: ${sms?.property3}</span> 
</div> 
+0

コントローラクロージャを直接呼び出すとどうなりますか?つまり、(http:// localhost:8080/sms/send/id)を入力するとテンプレートが表示されますか? – proflux

+0

@proflux、それはテンプレートを細かくレンダリングします。あなたの応答をありがとう –

答えて

2

ここ

まず、いくつかの物流の誤差があるようです、あなたはtと思われるo messageBoxテンプレートを2回レンダリングする。あなたは、ページの読み込みの1に提供されていない限り、ページのロード「SMS」で呼び出しているGSPあなたの「クライアント」...

<g:render template="messageBox" model="${[sms:sms]}/> 

では常にnullになります。そして、あなたもまた

render(template: messageBox, model:[sms:sms]) 

...あなたのコントローラで再びそれを呼び出しているように見える、私はdivの移動になります。テンプレートの「メッセージボックス」の外になど...

<g:form> 
    <label for="id">Sms ID </label> 
    <g:textField name="id" /> 
    <g:submitToRemote value="search" update="msgBox" 
        url="[controller:'sms', action:'send']"/> 
</g:form> 
<div id="msgBox">Waiting for some AJAX!</div> 
クライアント何かに

最後に、プロトタイプやjqueryのようにヘッダーにjavascriptライブラリがあることを確認してください。私はこれがあなたの問題を解決するかどうかはわかりませんが、それは良いスタートになるでしょう。お知らせ下さい!

関連する問題