【问题标题】:Grails: Call taglib from g:if tagGrails:从 g:if 标签调用 taglib
【发布时间】:2023-03-09 11:22:01
【问题描述】:

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

我试过了:

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

但这会引发错误。

我也试过了:

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

但这也会引发错误。

【问题讨论】:

  • 你试过了吗:&lt;g:if test="${custom.tag() &amp;&amp; other.boolean}"&gt;
  • 是的,给我一个错误,说不能在空对象上调用标签。
  • @tim_yates 的方式似乎是正确的(也许命名空间有问题?),但是以这种方式使用 taglib 有点奇怪。你确定,你做对了吗?
  • 你说得对,我的命名空间(错字)有问题。修复后,以 tim_yates 指定的方式调用 taglib 效果很好。

标签: grails taglib


【解决方案1】:

taglib 是什么样子的?看看用法应该是这样的:

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

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

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

此外,您应该使用 Tim 提到的 taglib:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多