Grails:out vs return

时间:2011-11-14 10:21:47

标签: grails

仅在我的机器上的grails 1.2.4上出现一个奇怪的问题......

我们正在使用自定义taglib,可以通过AppContext中的gspTagLibraryLookup-bean从服务访问。

在我的本地计算机上

    <my:span value="abc" title="${my.write(text:'123')}"/>

写道:

    123<span title="">abc</span> <!-- what i see -->
    <span title="123">abc</span> <!-- what my collegue see -->

my:write 被定义为:

    def write = {out << attrs.text}

但是:如果我使用return而不是out,那么html会生成我的同事所看到的内容。

有人知道区别吗?

1 个答案:

答案 0 :(得分:0)

title属性的参数值在传递给<my:span>之前进行评估。因此,如果您将write定义为{out << attrs.text},并在<my:span>中使用它,则write函数会在out函数执行前写入span,什么都不返回 - 所以123将被写入<span>之前的输出,而title属性将为空。

如果您将write定义为{return attrs.text},则其评估不会写出任何内容,并返回123,它将作为title属性的值插入。< / p>

不确定为什么第一个定义适用于你的同事的机器。