2014-02-24 31 views
3

我有一个自定义标签库,它返回一个布尔对象,以便我的GSP可以决定是否显示一段html。我想用g:if标签来检查这个布尔值,因为我还需要检查其他一些值(在taglib中不可访问)。但是,我不知道如何从标签实际调用taglib?Grails:从g调用taglib:if标签

我已经试过:

<g:if test="${<custom:tag/> && other.boolean}"> 

,但抛出的错误。

我也试过:

<g:if test="<custom:tag/> && ${other.boolean}"> 

,但同样引发错误。

+1

你尝试:'<克:如果测试= “$ {custom.tag()&& other.boolean}”>' –

+0

是的,给了我一个错误,说这个标签无法在空对象上调用。 –

+0

@tim_yates的方式似乎是正确的(也许麻烦命名空间?),但以这种方式使用taglib有点奇怪。你确定,你做对了吗? –

回答

8

taglib的外观如何?纵观用法应该是如下:

class SomeTagLib { 
    static namespace = "custom" 
    static returnObjectForTags = ['tag'] 

    def tag = { attrs, body -> 
     //returns an object (can be boolean) 
    } 
} 

默认情况下,标签库将返回StreamCharBuffer。如果你需要返回一个对象,(在你的情况下将被用作条件语句的一部分),我想你需要returnObjectFromTags如上所示。它指定哪个标签偏离默认行为并返回对象。

此外,你应该使用标签库作为由Tim提到:

<g:if test="${custom.tag() && other.boolean}"> //should be the appropriate way