Лучший дизайн MVC для рендеринга шаблона Grails и передачи данных в этот шаблон? - PullRequest
0 голосов
/ 26 ноября 2009

У меня есть шаблон, который отображает диаграмму в соответствии с заданным списком (полученным из слоя моего домена). Этот шаблон отображается несколько раз (с другим списком) на одной и той же странице (скажем, "домашняя страница"), а также на нескольких страницах.

Например,

<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 - это (единственное) решение?

Спасибо за ваши идеи.

1 Ответ

0 голосов
/ 29 декабря 2010

Я решил свою проблему с помощью тега include , который позволяет включать частичные представления, отображаемые в ответе другого контроллера / действия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...