grails - grails 2.0 vs 1.3.7,flash.message和gsps的工作方式

标签 grails grails-2.0

在Grails 1.3.7中,默认 Controller 将为域类的save操作中的Flash消息显示生成如下代码(请注意分配的开始,即“$ {):

 flash.message = "${message(code: 'default.created.message', args: [message(code: 'issue.label', default: 'Issue'), issueInstance.id])}"

在Grails 2.0中,将其更改为
 flash.message = message(code: 'default.created.message', args: [message(code: 'issue.label', default: 'Issue'), issueInstance.id])

我们可以注意到的区别是作业的开始。在1.3.7中,很显然在“gsp编译时/运行时?”处传递了一个字符串以在gsp内部进行求值。看来Grails 2.0中不再需要此功能。这是由于Groovy功能的更改/改进吗?简而言之,我试图了解Grails的不同之处,即不再需要传递在GSP内部进行评估的消息,并且通常可以在其中利用Grails 2.0的这种差异/变化。

谢谢,雷

最佳答案

我认为第二种方法(Grails 2.0)比较干净。由于这两种选择实际上都评估同一个String,因此在GString中评估的第一个似乎没有任何值。它是GString的事实意味着它将进行额外的表达式($ {...})处理(因此会稍慢一些),而Grails 2.0版本直接进入了消息标签库。

不知道为什么它最初是用第一种方法完成的...顺便说一句,我不认为GString内部的代码是在GSP处理过程中评估的-它是在将GString分配给 Controller 中的flash.message时评估的(与Grails 2.0版本相同)...

关于grails - grails 2.0 vs 1.3.7,flash.message和gsps的工作方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966752/

相关文章:

grails - Grails注销另一个登录的用户

grails - 如何在超过2个域中使用Grails可搜索插件

grails - 如何列出要注入(inject) grails 的可用对象?

grails - Grails 2.3.x升级产生重复hasMany关系

grails - 在 grails 3 应用程序中,什么是微调器,我需要 application.js 吗?

grails - Grails 2 rc3 中的安全操作

grails - 如何在Grails中实现(唯一)页面浏览量跟踪?

validation - 在 Grails 中,如何在字段旁边显示验证错误消息?

grails - Grails 2.2.x中的连接池?

grails - 如何在grails项目中更改URL?