2016-08-04 95 views
0

是否有任何关于如何创建自定义grails标记的文档,这些标记会生成类似于“< g:if>”和“< g:else>”的常规代码?创建自定义Grails标记库生成代码

使用正常的grails taglib,我可以生成html或原始输出,但我希望输出的代码可以类似于if和else标签的工作方式进行解释。

这里是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> 

除了隐藏复杂的逻辑,我想这个能力,所以我可以用<克:其他>标签我的自定义标记之后。

一般来说,除了当前的taglib格式之外,我还想在我的工具箱中使用另一个工具。

+0

你能提供你想要达到什么的更多细节? –

+0

是的,我已经更新了一个更具体的问题。 –

+0

如果你想要类固醇上的'g:if'标签,扩展原来的'if'标签 – injecteer

回答

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> 
+0

感谢您的反馈。我熟悉如何以这种方式创建taglib。我正在寻找更复杂的版本。我更新了我的问题,希望能够反映出这一点。 –