我如何将JSONObject传递给Java模板's javascript的Play框架?
How do I pass a JSONObject to a Play Framework for Java template's javascript?
我正在使用Java的Play框架(2.4)。我想传递一个JSONObject到一个javascript内使用的播放视图模板之一。
在Java端,我准备JSONObject,如下所示:
(请记住,这是一个测试车辆。)
public static Result showBusinesses(){
List<Item> list = new ArrayList<Item>();
Item r = new Item();
r.id = "23234";
r.name = "Joes hardware";
Item s = new Item();
s.id = "23254";
s.name = "Martys collision";
list.add(r);
list.add(s);
return ok(views.html.wheel.render(getJSONObject(list)));
}
public static JSONObject getJSONObject(List<Item> list){
JSONObject jsonObject = new JSONObject();
try{
for (int i = 0; i < list.size(); i++) {
jsonObject.put(list.get(i).id, list.get(i).name);
}
}catch (JSONException e) {
}
return jsonObject;
}
在我的Play模板中,我接受JSONObject参数:
@(item : org.json.JSONObject)
@import helper._
@import helper.twitterBootstrap._
@import play.api.libs.json.Json
…
到目前为止,一切顺利。
直到我尝试在javascript中使用对象:
如果我把我的对象@item放在除了javascript之外的模板的任何地方,我得到这个:{"23254":"Martys pancake","23234":"Joes place"};在我看来,这是一个格式正确的变量。
我插入JSONObject到javascript像这样:
<script type="text/javascript">
businesses = @item;
,我希望翻译成这样:
businesses = {
"23332" : "Joe's hardware",
"56755" : "Marty's collision"
};
但是对象的行为却不符合预期。我怀疑我没有以正确的方式将参数传递给javascript。
有谁能开导我一下吗?谢谢。
我找到了自己问题的答案。结果很简单。首先,您不需要乱搞JSON。你将一个标准的Java List传递给Play模板。然后在Javascript变量花括号内遍历该列表。下面是模板代码:
@(businesses: List[Business])
@import helper._
@import helper.twitterBootstrap._
...
<script type="text/javascript">
places = {
@for((item, index) <- businesses.zipWithIndex) {
@if(index != businesses.size-1) {
"@item.id" : "@Html(item.name)",}
else {"@item.id" : "@Html(item.name)"}
}
};
我使用了内置的zipWithIndex,因为我需要逗号分隔除最后一行以外的每一行。需要@Html()转义HTML需要翻译的所有特殊字符。javascript运行后,最终得到变量:
places = {
"345" : "Joe's Hardware",
"564" : "Jan's Party Store"
}
相关文章:
- 在其他javascript框架模板中运行angular指令
- 如何使用javascript、jquery或其他javascript框架过滤数据
- 如何将javascript框架注入ChakraBridge上下文
- 用于绘制工作流图的JavaScript框架
- 用于chrome-ext.开发的简单而流行的javascript框架
- 客户端的JavaScript框架
- 将Javascript框架与Java Web框架集成
- 做全栈JavaScript框架在客户端或服务器上创建HTML
- 服务器端javascript框架
- Javascript框架中的美元符号
- 主要JavaScript框架/库的列表
- 哪种javascript框架适合开发以php为后端的单页应用程序
- 使用 JavaScript 框架的设计器工作流
- 我应该将javascript框架与我的应用程序捆绑在一起还是使用公共CDN
- Q(Q框架)是什么意思?(异步JavaScript框架)
- 这些 Node.js 和 JavaScript 框架是什么,它们做什么
- 哪个JavaScript框架对新手来说更容易:Ember.js,Canjs,Angular.js
- 是否可以在GWT或任何其他JavaScript框架中选择垃圾收集算法
- JavaScript 框架,用于构建动态但服务器端驱动的前端
- $super Classy JavaScript 框架中的探测器