Play2.2 Java - 防止在Javascript模板上转义

时间:2015-02-09 01:15:31

标签: javascript json playframework playframework-2.2 scala-template

说明

我试图将JSON对象初始化为我的javascript模板。

查看:views.tasks.task.js

@()

@import play.libs.Json
@import enums.TaskType

...
var taskTypes = @Html(@Json.stringify(TaskType.valuesJson()));

型号:TaskType

public enum TaskType {

@EnumValue("General")
GENERAL(1, "General", "label-info", "item-blue");

...

public static JsonNode valuesJson() {
    ArrayNode arr = Json.newObject().arrayNode();
    for(TaskType tt: values()){
        arr.add(tt.jsonNode());
    }

    return arr;
}

结果:

taskTypes = [{\"value\":\"General\",\"label\":\"label-info\",\"itemColor\":\"item-blue\"}];

预期:

taskTypes = [{"value":"General","label":"label-info","itemColor":"item-blue"}];


  

问题:如何在不逃避的情况下执行此操作?为什么 @Html(...)无效?

1 个答案:

答案 0 :(得分:2)

<强>解决方案:     @JavaScript(Json.stringify(TaskType.valuesJson()));

<强>说明: Play为文件&#34; *。js&#34;使用JavaScript模板格式,因此您需要使用@JavaScript而不是@Html。在了解了模板引擎的工作原理后,它很清楚......

<强>来源: