仅在我的机器上的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会生成我的同事所看到的内容。
有人知道区别吗?
答案 0 :(得分:0)
title
属性的参数值在传递给<my:span>
之前进行评估。因此,如果您将write
定义为{out << attrs.text}
,并在<my:span>
中使用它,则write
函数会在out
函数执行前写入span
,什么都不返回 - 所以123
将被写入<span>
之前的输出,而title属性将为空。
如果您将write
定义为{return attrs.text}
,则其评估不会写出任何内容,并返回123
,它将作为title
属性的值插入。< / p>
不确定为什么第一个定义适用于你的同事的机器。