创建自定义Grails Tag Lib生成代码

时间:2016-08-04 01:50:33

标签: grails groovy gsp taglib

是否有任何关于如何创建自定义grails标记的文档,该标记生成的groovy代码类似于"< g:if>"和"< g:else>"?

使用普通的grails taglib,我能够生成html或raw输出,但我希望输出的代码可以解释为类似于if和else标记的工作方式。

以下是#34的Grails源代码示例;如果"标记:

@Override
protected void outputStartTag(String envExpression, String testExpression) {
    out.print("if(");
    out.print(envExpression);
    out.print(" && ");
    out.print(testExpression);
    out.println(") {");
}

如何在我自己的taglib前缀中执行类似的操作。

示例:

<mine:doSomethingCool key="foo">This text is conditionally shown</mine:doSomethingCool>

除了隐藏复杂的逻辑,我想要这个能力,所以我可以使用&lt; g:else&gt;我的自定义标记后面的标记。

一般情况下,除了当前的taglib格式之外,我还希望在我的工具箱中使用其他工具。

1 个答案:

答案 0 :(得分:0)

例如,如果您只想在key == 'foo'时呈现条件文本,则可以这样做:

class SomethingTagLib {

    static namespace = "ns"

    def doSomethingCool = { attrs, body ->
        if (attrs.key == 'foo') {
            out << body()
        }
    }
}

然后您可以像这样使用此标记:

<ns:doSomethingCool key="foo">This text is conditionally shown<ns:doSomethingCool>