GSP

В качестве шаблонов для генерации текста используется формат gsp. Синтаксис совпадает с оригинальным gsp (Groovy Server Pages) из проекта http://grails.org для обеспечения нормального редактирования в IDE, которые поддерживают gsp.

Особенности сгенерированного по шаблону класса:

  • каждая строка внутри метода совпадает со строкой в шаблоне, что позволяет однозначно идентифицировать место возникновения ошибки в шаблоне (в отличии от оригинального gsp, где нет соответсвия между сгенерированным классом и оригинальным шаблоном)
  • базовый класс должен реализовывать интерфейс jandcode.groovy.IGspTemplate

Синтаксис

Парзер gsp просто преобразует текст шаблона в текст на groovy по следующим правилам:

  • ANYTEXT преобразуется в out('ANYTEXT') (вывести фрагмент текста)
  • ${ANYTEXT} преобразуется в out(ANYTEXT) (вывести значение выражения)
  • <%ANYTEXT%> преобразуется в ANYTEXT (вставить фрагмент groovy-кода)
  • <%=ANYTEXT%> преобразуется в out(ANYTEXT) (вывести значение выражения)
  • <%--ANYTEXT--%> преобразуется в /*ANYTEXT*/ (коментарий)
  • %{--ANYTEXT--}% преобразуется в /*ANYTEXT*/ (коментарий)
  • <xx:yy/> преобразуется в outTag('xx/yy') (вызов функции outTag)
  • <xx:yy atr="value" atr2="value2"/> преобразуется в outTag('xx/yy',atr:value,atr2:value) (вызов функции outTag)
  • <xx:yy atr="value" atr2="value2"> body </xx:yy> преобразуется в outTag('xx/yy',atr:value,atr2:value) { body } (вызов функции outTag)

Локальные переменные в шаблоне

Шаблон преобразуется в текст метода groovy. Соотвественно любое определение переменной определяет локальную переменную метода:

<%
    // локальные переменные метода шаблона
    String s = ""
    def a = []
%>

Для определения функций внутри шаблона изпользуются groovy closure (т.к. метод внутри метода объявить нельзя):

<%
    def pw2 = {a->
        return a*a
    }
%>
5^2 = ${pw2(5)}

Оглавление

Предыдущий раздел

GroovyService

Эта страница