3

我对 Grails 测试运算符感到困惑。

这个表达式:

<g:if test="${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))} ">
  ${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))}
</g:if>

印刷

false

怎么可能?我正在打印与我正在测试的完全相同的条件!

即使我确定测试条件评估为“假”,因为它在下一行打印错误,但 g:if 中的语句正在呈现。

阿努想知道发生了什么。

4

2 回答 2

6

我认为问题是测试中最后一个 } 之后的尾随空格。字符串“false”的计算结果为真,而“false”将被 if 标记适当地解释为假。

于 2010-05-12T10:29:16.657 回答
1

尝试删除 test 属性中关闭 } 后的多余空格。您可以在开发模式下通过将“?showSource=true”添加到 url 来查看生成的 groovy 源。额外的空间导致它创建一个字符串“假”,其评估结果为真。

于 2010-05-12T10:36:01.663 回答