2012-05-15 7 views
7

Napisałem taglib, który wykonuje pewną logikę i renderuje dane utkane w HTML. Kiedy używam taglib w widoku, taglib spodziewa się znaleźć szablon we względnym podfolderze widoku. Czy istnieje sposób, w jaki mogę sprawić, że taglib odbierze szablon ze wspólnego folderu, takiego jak widok układu/folderu. W ten sposób kod taglib wygląda:Grails: Zapisywanie taglib, który używa szablonu do renderowania danych i utrzymanie agnostyka kontrolera

class IconifiedTextTagLib { 

def renderIconText = { attrs, body -> 
       //some processing logic to generate the modelMap 
     out << render(template:"taglibTemplates/iconText", model:modelMap) 
    } 
} 

Kiedy użyć tagu <g:renderIconText /> powiedzmy kontrolera o nazwie A, to oczekuje, że taglibTemplates/Ikona i tekst być obecny w views/A/ teczka. Jest to problem, ponieważ muszę mieć możliwość korzystania z niego z wielu kontrolerów. Potrzebuję sposobu na umieszczenie szablonów w folderze, takim jak układy/tak, aby mógł być używany we wszystkich widokach. Wszelkie przemyślenia na temat tego, w jaki sposób mogę to zrobić?

Odpowiedz

9

Put szablon do views/taglibTemplates/ i spróbuj:

out << render(template:"/taglibTemplates/iconText", model:modelMap) 

lub w `views/A /”, a

out << render(template:"/A/iconText", model:modelMap) 
+2

Okazuje się, że brakowało/brakowało. Dziękuję za wskazanie tego. –

1

na Grails 2.3.8 musiałem użyć jako taki

upewnij się, że nazwa pliku szablonu zaczyna się od podkreślenia

_mytemplate.gsp 

w bibliotece z biblioteką znaczników

out << g.render(template: '/taglibTemplates/mytemplate') 
Powiązane problemy