Рендеринг более одного объекта за раз - PullRequest
0 голосов
/ 13 августа 2011

Я пытаюсь отобразить несколько объектов в формате 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. Как я могу одновременно визуализировать clientList и point объект?

Ответы [ 2 ]

3 голосов
/ 13 августа 2011

Вы можете попробовать:

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

Это приведет к созданию объекта JSON, например:

{
    "clientList": [ /* client list */ ],
    "point": { /* point object */ }
}
0 голосов
/ 14 августа 2011

Я всегда помещаю все на карту перед рендерингом в формате 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")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...