Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 一个动作可以调用多个渲染吗_Grails_Grails 2.0_Grails Controller - Fatal编程技术网

Grails 一个动作可以调用多个渲染吗

Grails 一个动作可以调用多个渲染吗,grails,grails-2.0,grails-controller,Grails,Grails 2.0,Grails Controller,我可以让一个操作多次调用render方法吗 def someAction() { render f.field() render f.field() } 我们正在尝试将两个字段从fields插件渲染到ajax响应以更新div。使用这种方式渲染是否有任何问题?这不是正确的方式,如果要更新多个元素,可以通过json渲染字段,如下所示: render ([fieldOne : f.field(), fieldTwo : f.field()] as JSON) 然后在JavaScript响应

我可以让一个操作多次调用render方法吗

def someAction() {
  render f.field()
  render f.field()
}

我们正在尝试将两个字段从fields插件渲染到ajax响应以更新div。使用这种方式渲染是否有任何问题?

这不是正确的方式,如果要更新多个元素,可以通过json渲染字段,如下所示:

render ([fieldOne : f.field(), fieldTwo : f.field()] as JSON)
然后在JavaScript响应中,您可以处理这两个字段并更新它们。 P/D:必须导入grails转换器才能使用“as JSON”语句

import grails.converters.JSON

简而言之,答案是否定的。但是,您可以使用
withFormat
,让控制器以不同的格式渲染:

withFormat {
            html bookList:books
            js { render "alert('hello')" }
            xml { render books as XML }
            json { render books as JSON}
        } 
是的,你可以

class ExampleController {
  def action1() {
    render text: 'text1'
    render text: 'text2'
    action2()
  }

  def action2() {
    render text: 'text3'
  }
}
在关闭响应之前,可以调用呈现

class ExampleController {
  def action1() {
    render text: 'text1'
    return // finishing response
    action2()
  }

  def action2() {
    render text: 'will not be rendered'
  }
}

另外,我从来没有这样做过。与在不同位置多次调用相比,在操作结束时调用一次渲染更好、更清晰。

我找到了一个多渲染的示例,但我相信您的方法更好。我认为这是技术上正确的答案,尽管我仍然找不到任何支持它的文档。对我来说,渲染只是将结果输出转储到响应中,因此可以多次调用,这是非常合理的,但是我们的团队选择使用JSON方法来更好地适应文档化的方法。