2010-06-02 4 views
2

Я пытаюсь создать многострочную строку в Groovy. У меня есть список строк, которые я бы хотел пропустить в многострочной строке. Я не уверен, что для этого синтаксис. Что-то вроде ниже ...Прокрутите список в строке строки строки Groovy

def html = """\ 
     <ul> 
      <li>$awaiting.each { it.toPermalink()}</li> 
     </ul> 
    """ 

ответ

5

Следующая:

class PLink { 
    String name 
    String toPermalink() { 
    "link->$name" 
    } 
} 
def awaiting = [ new PLink(name:'one'), new PLink(name:'two'), new PLink(name:'three') ] 
def html = """<ul> 
    <li>${awaiting.collect { it.toPermalink() }.join("</li><li>")}</li> 
</ul>""" 

Производит этот вывод:

<ul> 
    <li>link->one</li><li>link->two</li><li>link->three</li> 
</ul> 

Это в основном вызывает метод на каждом элементе, collects результаты обратно в другой список , а затем joins список вместе в строку

1

Считаете ли вы использование MarkupBuilder? Они обеспечивают действительно хороший способ построения HTML или XML, особенно если вы хотите внедрить петлевые конструкции или условную логику.

Например:

import groovy.xml.MarkupBuilder 

def writer = new StringWriter() 
def builder = new MarkupBuilder(writer) 

def awaiting = ['one', 'two', 'three'] 

builder.html { 
    ul { 
     awaiting.each { 
      li(it.toString()) 
     } 
    } 
} 

println writer.toString() 

Результаты в:

<html> 
    <ul> 
    <li>one</li> 
    <li>two</li> 
    <li>three</li> 
    </ul> 
</html> 
Смежные вопросы