grails - Grails:withFormat在 Action 方法中间

这是一个错误吗?
我的操作方法的中间中的if语句中包含以下块:

withFormat {
  json{ 
    render returnMap as JSON
    return 
  }
}

returnMap可以很好地呈现给客户端,但是该方法将继续执行,就好像从未处理过return一样。这是怎么回事?

我正在使用grails 1.3.7。

要回答我自己的问题:
我发现它与withFormat块有关。如果删除它,则return语句可以正常工作。使用withFormat时,似乎return语句退出该块并继续执行其余方法。
编辑:
Burt在下面澄清了,它是json {}闭包,与return语句一起退出(或者我猜没有它)。如果在关闭后有语句,则将执行它们。

最佳答案

返回值退出“json”闭包,但不退出整个方法。就像有方法与方法一样-您只能弹出一个级别。您需要在块内设置一个标志,然后在外部进行检查,例如

boolean renderedJson = false
...
withFormat {
  json{ 
    render returnMap as JSON
    renderedJson = true
  }
}
...
if (renderedJson) {
   return
}

https://stackoverflow.com/questions/6757223/

相关文章:

regex - 常规正则表达式测试失败

grails - 带有枚举的Grails JSON单元格

javascript - Grails和Javascript

hibernate - Grails中的事务提交事件处理程序

grails - 部署捆绑软件并从Spring EBR获得依赖捆绑软件

grails - 如果URL不包含额外路径,如何显示身份验证页面?

grails - Grails版本差异

json - Grails模型和子模型的JSON响应(一对多)

javascript - 使用Node.js从客户端向服务器发送json请求

hibernate - Grails域创建关联表