Nik*_*esh 1 javascript java playframework
我正在使用Play Framework 1.x.
有没有办法将数组从控制器传递给模板作为Javascript数组?
当你从javascript到Java进行POST或GET时,Play会自动映射你的参数.您可以使用renderJSON方法将对象从Java传递到javascript.然后使用像jQuery这样的东西将它映射到数组.也许如果你给我们一些背景信息,我们可以帮助你一点点.
public static void getContactsTable() {
List<Contacts> contacts = Contacts.findAllOrderByInserted();
renderJSON(contacts);
}
Run Code Online (Sandbox Code Playgroud)
然后将其映射到路线.
$.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);
});
Run Code Online (Sandbox Code Playgroud)
这是我所做的高图表的一个小例子.
这是另一个以另一种方式然后再发送数据以在页面上呈现的示例.
public static void testing(List<Long> selected) {
List<Contacts> contacts = new ArrayList<Contacts>();
for (Long index : selected) {
Contacts contact = contactService.findById(index);
contacts.add(contact);
}
renderJSON(contacts);
}
Run Code Online (Sandbox Code Playgroud)
这需要一个javascript数组.如您所见,映射会自动将其映射为列表.你也可以拥有一个java数组.
这是javascript函数.
var template = 'selectedTemplate';
var selectedOutput = '#selectedOutput';
$.post('@{ViewContacts.testing()}',{ selected : selected }, function(data) {
$(selectedOutput).html(tmpl(template, { items:data }));
});
<div id="selectedOutput">
<script id="selectedTemplate" type="text/html">
<% for (var i = 0; i < items.length; i++) {
var item = items[i];
%>
<li><%= item.name %> - <%= item.email %></li>
<% } %>
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这也是一个ajax请求.我正在获取所选数据(这只是一个选定节点的数组),然后将其传递给函数.然后我获取数据(函数(数据))并将其映射到items数组.我正在使用ejohn作为模板.
归档时间: |
|
查看次数: |
2988 次 |
最近记录: |