grails - Grails 中的渲染和返回渲染有什么区别

标签 grails

grails 中的以下内容有什么区别:

渲染 xyz

返回渲染xyz

我在 Controller 操作中返回渲染 xyz,并且该 Controller 操作在 IE 中被多次调用。我想知道 return render 是否是罪魁祸首。 这在本地 intellij tomcat 应用程序服务器中工作正常,但在生产 weblogic 服务器中失败。

最佳答案

render是一个void方法,所以它没有返回值,返回它的返回值就相当于返回null。 Groovy 将不返回任何内容(例如,只是一个简单的 return 语句)和返回 null 视为等价的, Controller 操作的返回值将被忽略,除非该值是一个 Map,因为“ Controller 操作的结果”不一定是返回的东西,而是完成的东西。

具体来说,这意味着您可以发出重定向、转发或渲染调用,这些都会触发预期的响应。但是,如果您返回一个 Map,则推断它是用于渲染 GSP 的模型映射,其名称与 Controller View 文件夹中的 Action 相同,例如FooController 中的 bar 操作呈现 grails-app/views/foo/bar.gsp。

如果你有一个逻辑分支,例如在保存操作中,成功的结果之后会重定向到显示操作,但失败的结果会导致重新呈现编辑页面,并显示之前的值和错误,您可以使用简单的 if/else,例如

if (successful) {
   redirect ...
}
else {
   render ...
}

或者你可以早点回来,例如

if (successful) {
   redirect ...
   return
}

render ...

所以您看到的是将这两行合并为一行:

if (successful) {
   return redirect ...
}

render ...

这有点像 hack,因为它暗示您要返回 redirect(或其他一些 void 方法)返回的内容,但您什么也没返回。它有效并且有效,但我更喜欢将 return 语句保留在自己的行中,因为对于正在发生的事情没有歧义。

关于grails - Grails 中的渲染和返回渲染有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276608/

相关文章:

grails - Intellij IDEA x Grails

grails - 安装 spring-security-core grails 插件后,如何让 IDEA 了解 jar 文件?

grails 嵌入式服务器功能测试需要有有效的 ssl 证书

grails - Grails Spring Security:如何允许密码为空?

testing - 任务 ':compileIntegrationTestGroovy' 执行失败

grails - Groovy-map:每次需要新实例

exception - 域类的Grails软件包更改导致DuplicateMappingException

javascript - Grails - 将字符串值从 Controller 传递到 View ,并在 JS 中使用逻辑值

grails - Spock插件在Grails 3.0.5中支持吗

javascript - grails 中的 CORS - 所有请求都失败了吗?