У меня есть шаблон, который отображает диаграмму в соответствии с заданным списком (полученным из слоя моего домена). Этот шаблон отображается несколько раз (с другим списком) на одной и той же странице (скажем, "домашняя страница"), а также на нескольких страницах.
Например,
<g:render template="/template/chart" model="order: 'asc', orderBy: 'age', max: 5, domainClass: Person"></g:render>
должен отображать список из 5 человек, упорядоченных по возрасту в порядке возрастания.
Но проблема в том, что мне нужно составить список людей путем запроса уровня домена, и, к сожалению, это можно сделать только с помощью кода шаблона, например:
<%
def vizuService = grailsApplication.classLoader.loadClass('com.myapp.VizuService').newInstance()
%>
<img src="${vizuService.getChartImage(order, orderBy, max, domainClass)}"/>
//The service method getChartImage will query the DB
Этот дизайн имеет недостатки, потому что я получаю свои данные через слой View. Но,
Я не могу разумно отправить список данных в шаблон через контроллер домашней страницы , поскольку контроллер может даже НЕ знать, сколько диаграмм (и какие данные) отображаются на домашней странице.
Итак, как я могу создать его в манере MVC ? (т.е. контроллер должен нести ответственность за получение / передачу данных). Является ли TagLib единственным способом сделать это? (и IMO, TagLib не совсем соблюдает принципы MVC) Может быть, AJAX - это (единственное) решение?
Спасибо за ваши идеи.