此问题与grails版本2.0.0.RC3有关。在我从2.0.0.RC1升级到2.0.0.RC3之后,我开始注意到使用g:set标签在页面范围内设置的变量使用g:set标签不起作用。经过一番调查后,我意识到问题是由同一GSP文件中的g:include标签引起的。
我能够在全新的grails项目中使用以下代码片段重现问题。创建项目后,我在views / include / head.gsp下创建一个文件,并将其留空。然后我将以下内容插入index.gsp:
<g:include view="/include/head.gsp" />
<h2>Set Test</h2>
<g:set var="myVariable" value="${true}" />
<g:if test="${myVariable}">
<p>it is true</p>
</g:if>
<p>myVariable: '${myVariable}'</p>
上述代码段的输出应为:
Set Test
it is true
myVariable: 'true'
但是,我得到的是以下内容:
Set Test
myVariable: ''
我开始认为这是一个错误。你觉得怎么样?
谢谢,
-Cesar