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

时间:2016-04-29 17:23:43

标签: grails grails-2.0 grails-controller

我可以多次动作调用渲染方法吗?

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

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

3 个答案:

答案 0 :(得分:2)

是的,你可以。

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'
  }
}

P.S。我从来没有这样做过。在动作结束时调用渲染一次比在不同地方调用几次更好更清晰。

答案 1 :(得分:1)

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

render ([fieldOne : f.field(), fieldTwo : f.field()] as JSON)

然后在JavaScript响应中,您可以处理这两个字段并更新它们。 P / D:您必须导入grails转换器以使用“as JSON”语句

import grails.converters.JSON

答案 2 :(得分:0)

简短的回答是否定的。但是,您可以使用withFormat

让控制器以不同的格式呈现
withFormat {
            html bookList:books
            js { render "alert('hello')" }
            xml { render books as XML }
            json { render books as JSON}
        }