2016-08-04 3 views
0

Есть ли какая-либо документация о том, как создать собственный тег grails, который генерировал код groovy, похожий на «< g: if>» и «< g: else>»?Создать пользовательский Grails Tag Lib генерирует код

Используя обычный taglib grails, я могу генерировать html или raw-выход, но я ищу код вывода, который можно интерпретировать так же, как и теги 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 таким образом. Я ищу более сложную версию. Я обновил свой вопрос, чтобы, надеюсь, это отразить. –

Смежные вопросы