2016-08-04 98 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。我正在尋找更復雜的版本。我更新了我的問題,希望能夠反映出這一點。 –