2011-08-13 5 views
0

複数のオブジェクトをJSONとしてレンダリングしようとしています。私のコントローラのコードは次のようになります。一度に複数のオブジェクトをレンダリングする

ここ
def showClient = { 
    if (springSecurityService.isLoggedIn()) { 
     def q_param = params.name_startsWith; 
     def listOfClients =ClientRole.findAll("FROM ClientRole WHERE party.name LIKE ? AND is_active =true",["%"+q_param+"%"]) 
     def point= Point.get(1) 

     ArrayList<DisplayableName> clientList = ParameterFormatter.getFormattedDisplayNameList(listOfClients) 
     def json = clientList as JSON 
     log.debug("showClients :: jsondata = "+json) 
     render json 
    }else{ 
     redirect(controller:'login',action: "auth") 
    } 
} 

私だけclientList JSONとしてレンダリングしていますが、私はまたpointオブジェクトをレンダリングします。 clientListpointのオブジェクトを同時にどのようにレンダリングできますか?あなたが試すことができ

答えて

3

{ 
    "clientList": [ /* client list */ ], 
    "point": { /* point object */ } 
} 
+0

あなたはplsは実際にそこに何が起こるか私に説明し...とどのような値に表示 – Hussy

+0

を取得する私は、私が説明するのは他に何か分からない、と私は従わない推測することはできあなたのコメントの2番目の部分。 JSONをレンダリングするためのドキュメント(http://www.grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.7 XMLとJSONレスポンス)を読んでください。おそらくそれはあなたのためにいくつかのことをクリアするでしょう。 –

0

私は常にJSONとしてレンダリングする前にマップにすべてをかける:

render(contentType: 'text/json') { 
    delegate.clientList = clientList 
    delegate.point = point 
} 

をこれは次のようにJSONオブジェクトになります!ので、この方法を試してください。

def showClient = { 
    if (springSecurityService.isLoggedIn()) { 
     def q_param = params.name_startsWith; 
     def listOfClients =ClientRole.findAll("FROM ClientRole WHERE party.name LIKE ? AND is_active =true",["%"+q_param+"%"]) 
     def point= Point.get(1) 

     ArrayList<DisplayableName> clientList = ParameterFormatter.getFormattedDisplayNameList(listOfClients) 
     def map = [clients:clientList] 
     map << [point:point] 
     def json = map as JSON 
     render json 


    }else{ 
     redirect(controller:'login',action: "auth") 
    } 
} 
+0

だから私はビューのページにポイントを表示する方法を取得するには? – Hussy

+0

@Hussy関数コールバック(json){alert(json.point);} –

関連する問題