gpt4 book ai didi

java - 如何将 JSONObject 传递到 Play Framework for Java 模板的 javascript?

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:52 25 4
gpt4 key购买 nike

我正在使用 Java 的 Play 框架 (2.4)。我想将 JSONObject 传递给 Play View 模板之一内使用的 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":"马蒂煎饼","23234":"乔斯的地方"};对我来说,这看起来像是一个正确形成的变量。

我将 JSONObject 插入到 JavaScript 中,如下所示:

<script type="text/javascript">

businesses = @item;

我希望翻译成这样:

businesses = {
"23332" : "Joe's hardware",
"56755" : "Marty's collision"
};

然而该对象的行为却没有达到预期。我怀疑我没有以正确的方式将参数传递给 JavaScript。

谁能帮我解答一下吗?谢谢。

最佳答案

我找到了我自己问题的答案。结果变得相当简单。首先,你不需要搞乱 JSON。您将标准 Java 列表传递给 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"
}

关于java - 如何将 JSONObject 传递到 Play Framework for Java 模板的 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com