3

GSP(Groovy Server Page)で、サーバー側の呼び出しの後に<g:submitToRemote update="...">を更新するために使用しています。<div>

タグのドキュメントやWeb上の他のソースによると、ターゲット<div>はページに任意に配置できます。ただし、私のテストでは、タグ<div>を囲む必要があることがわかりました。<g:submitToRemote>

そうでない場合はいくつ<div>かの「ランダムな」コンテンツ(つまり、タグを囲むフォームの一部)で更新されます。<g:submitToRemote>

次のGSPコードを検討してください。

<html>
<head>
    <g:javascript library="prototype" />
</head>
<body>

<div id="updateMe_NOT_WORKING">${message}</div>

<g:form>
    <div id="updateMe_WORKING">
        <g:submitToRemote value="Click Me"
            action="someAction" update="updateMe_NOT_WORKING" />
    </div>
</g:form>

</body>
</html>

それはGrails1.3.4にあります。
私は何が欠けていますか?- ありがとう

4

2 に答える 2

4

私のテストによると、g:submitToRemoteaction属性は現在のコントローラーの現在のアクションを指してはなりませ(これにより、現在のビューが現在のビューに挿入/複製されます)。

-で代替アクションを指定した場合に機能します。g:submitToRemote

<g:submitToRemote value="Click Me"
    action="ajaxAction" update="updateMe" />

このアクションがモデルを提供する場合-つまり、

def ajaxAction = { [message: 'foo'] }

次に、対応するGSPが必要です。この場合は、次のように記述します。

$message

または、アクションでrenderメソッドを使用することもできます-このように、

def ajaxAction = { render 'foo' }

追加の回答がある場合に備えて、この問題はしばらく開いたままにしておきます。回答がない場合は、この回答を解決策として受け入れます。

ありがとう

于 2010-12-01T15:56:27.310 に答える
3

問題は、アクションのコントローラーを指定しないことだと思います。g:submitToRemoteタグにcontroller="..."を追加してみてください。または、少なくともg:formで指定します。

<div>ラップする必要はないと確信しています。

于 2010-12-01T08:20:09.503 に答える