0

ユーザーが新しいドメイン オブジェクト (Sync) の名前を入力した後、オブジェクトを保存し、同じページのフラグメントに移動し、div の css クラスを (js colorbox に) 変更したい grails アプリがあります。 、それが重要な場合)。

これを行うには、アンカーを使用してクラスを設定し、フラグメントに移動して、JS を使用して ag:formRemote を送信します。ただし、formRemote は作成されたオブジェクトを返しません。

gsp の一部:

<g:formRemote url="[controller: 'Main', action:'createNewSync']" name="newSyncForm"   >
<g:field type="text" name="newSyncName" />

<a id="ns-link" href="#outline_content" class="outline">
<script>
  $('#ns-link').click(function(){
     $('#newSyncForm').submit();
  });
 </script>
 </g:formRemote>

gsp の後半で、outline_content を内部に含むカラーボックスを使用するように移動します。syncInstance.name が必要であることに注意してください。

<script>
$(document).ready(function(){
$(".outline").colorbox({inline:true, width:"1140px", escKey:false, overlayClose:false});
</script>

<div id="sync" class="hidden">
<div id='outline_content' style='padding:10px; background:#fff;' >
    <h2 class="nameheader"><strong style="color:#000;">New Sync:</strong><span class="editable_textile">${syncInstance?.name}</span></h2>
        <div class="number1"><img src="../images/1.png" border="0" /></div>

.....

コントローラ:

def createNewSync(){
    params.name = params.newSyncName
    def syncInstance =  Sync?.findByName(params.newSyncName) 

if (!syncInstance)
{
        syncInstance = new Sync(params)
        def u = User.findByUsername(springSecurityService.principal)
        syncInstance.properties['createdBy'] = u
        syncInstance.properties['createdDate'] = new Date().toString()
        syncInstance.properties['lastRunTime'] = "Never"
        syncInstance.properties['lastRunOutcome'] = "---"
        syncInstance.properties['isScheduled'] = false
        syncInstance.properties['isComplete'] = false

        syncInstance.save(failOnError: true, flush: true)

    }        
    //doesn't send anything back to page if it's been called remotely
    [syncInstance: syncInstance]
}   

このメソッドを使用して、後でページで使用される作成されたオブジェクトへの参照を取得する方法はありますか? そうでない場合、これを達成する別の方法はありますか?

4

1 に答える 1

0

わかりました、これが私がすることです

1) 同期用のテンプレートを作成します。「同期」の id を持つ div 内に含まれるすべてのものになりますが、div 自体ではありません。

2) formRemote タグを更新して、その div を更新します <g:formRemote update="sync" ... />

3) コントローラーでテンプレートをレンダリングする render(template: "path/to/template", model:[syncInstance: syncInstance])

于 2012-12-01T00:11:57.073 に答える