HTML с использованием Groovy MarkupBuilder, как элегантно сочетать теги и текст?

При использовании Groovy MarkupBuilder у меня есть места, где мне нужно вывести текст в документ или вызвать функцию, которая выводит текст в документ. В настоящее время я использую неопределенный тег "текст" для вывода. Есть ли лучший способ написать этот код?

li {
  text("${type.getAlias()} blah blah ")
  function1(type.getXYZ())
  if (type instanceof Class1) {
    text(" implements ")
    ft.getList().each { 
      if (it == '') return
      text(it) 
      if (!function2(type, it)) text(", ")
    }
  }
}
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
4
0
4 826
2

Ответы 2

Включите метод:

void text(n){
    builder.yield n
}

Скорее всего, вы (я) скопировали этот код откуда-то, где был текстовый метод, но вы также не копировали текстовый метод. Поскольку MarkupBuilder принимает любое имя в качестве имени тега, а браузеры игнорируют неизвестную разметку, это просто сработало.

Обратите внимание, что это работает, только если builder не является экземпляром MarkupBuilder ...

dedek 19.02.2015 12:23

Собственно, сейчас рекомендуется использовать mkp.yield, например,

src.p {
    mkp.yield 'Some element that has a '
    strong 'child element'
    mkp.yield ' which seems pretty basic.'
}

производить

<p>Some element that has a <strong>child element</strong> which seems pretty basic.</p>

Что такое мкп? это экземпляр MarkupBuilder?

David W 21.02.2014 04:37

@DavidW: Нет, это не так! Он будет производить <yield> the text ... </yield>. mkp - это специальное пространство имен, используемое для выхода из обычного режима построения строителя и получения доступа к вспомогательным методам разметки, таким как yield и yieldUnescaped. См. docs.groovy-lang.org/latest/html/api/groovy/xml/…

dedek 26.03.2015 14:58

Другие вопросы по теме