我正在使用Play Framework 1.x.
有没有办法将数组从控制器传递给模板作为Javascript数组?
当你从javascript到Java进行POST或GET时,Play会自动映射你的参数.您可以使用renderJSON方法将对象从Java传递到javascript.然后使用像jQuery这样的东西将它映射到数组.也许如果你给我们一些背景信息,我们可以帮助你一点点.
public static void getContactsTable() { Listcontacts = Contacts.findAllOrderByInserted(); renderJSON(contacts); }
然后将其映射到路线.
$.getJSON("@{ViewContacts.getContactsTable()}", function(data) { var series = { data: [] }; $.each(data, function(index, item) { series.data.push([parseInt(item.date), item.qty]); }); options.series.push(series); var chart = new Highcharts.Chart(options); });
这是我所做的高图表的一个小例子.
这是另一个以另一种方式然后再发送数据以在页面上呈现的示例.
public static void testing(Listselected) { List contacts = new ArrayList (); for (Long index : selected) { Contacts contact = contactService.findById(index); contacts.add(contact); } renderJSON(contacts); }
这需要一个javascript数组.如您所见,映射会自动将其映射为列表.你也可以拥有一个java数组.
这是javascript函数.
var template = 'selectedTemplate'; var selectedOutput = '#selectedOutput'; $.post('@{ViewContacts.testing()}',{ selected : selected }, function(data) { $(selectedOutput).html(tmpl(template, { items:data })); });
正如您所看到的,这也是一个ajax请求.我正在获取所选数据(这只是一个选定节点的数组),然后将其传递给函数.然后我获取数据(函数(数据))并将其映射到items数组.我正在使用ejohn作为模板.