我有一个模板,根据给定列表(从我的域层检索)呈现图表。此模板在同一页面上多次显示(使用不同的列表)(比如说“主页”)以及多个页面。
例如,
<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是(唯一的)解决方案?
感谢你的想法。