2012-05-30 2 views
1

Я искал по всему Интернету также в документах о вложенных тегах для отношения родитель/ребенок, но пока ничего не получил. То, что я хочу узнать, есть ли в любом случае для такого обычая «родитель» тег, чтобы знать о своих «детях»Вложенные теги Grails

<mytag:parent source="${somelist}"> 
    <mytag:child column="name" style="padding-left:10px"> 
    </mytag> 
    <mytag:child column="surname" style="padding-left:10px"> 
    </mytag> 
</mytag> 

В этом примере родительского тега получают сбор и дети печатают свои данные столбцов с помощью вызова somelist.name и somelist.surname соответственно. Должен ли я разбирать DOM, чтобы узнать о детях, или я могу каким-то образом связаться с детьми в «отличном» коде?

ответ

5

<mytag:parent> должен поместить собственный контекст/данные в качестве атрибута области запроса (или области страницы), обработать его <mytag:child> и удалить его при закрытии тега. Как:

static final CONTEXT = this.class.name 

def parent = { attrs, body -> 
    def data = [ 
     name: 'test 1', 
     surname: 'test 2' // i guess you want to load this values from attr.source 
    ] 
    request.setAttribute(CONTEXT, data) 
    out << body.call() 
    request.removeAttribute(CONTEXT) 
} 


def child = { attrs, body -> 
    def data = request.getAttribute(CONTEXT) 
    out << 'name: ' 
    out << data.name 
    out << 'surname: ' 
    out << data.surname 
} 
+0

Это бросает исключение как класс groovy.lang.MissingMethodException Сообщение Нет подписи метода: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.removeAttribute() применяется для типов аргументов: (java.lang.String, java.util.LinkedHashMap) values: [java.lang.Class, [x: 1, name: test]] Возможные решения: removeAttribute (java.lang.String) – ufucuk

+0

Конечно, попробуйте обновленную версию –

+0

спасибо за вашу помощь, но этот код ничего не выводит на экран, когда он вызывается как . – ufucuk

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