Play2.2 Java - 防止在 Java 脚本模板上转义
Play2.2 Java - Prevent escaping on Javascript template
描述:
我正在尝试将 JSON 对象初始化到我的 javascript 模板中。
查看:views.tasks.task.js
@()
@import play.libs.Json
@import enums.TaskType
...
var taskTypes = @Html(@Json.stringify(TaskType.valuesJson()));
模型:任务类型
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"}];
Question: How to do it without escaping? Why is @Html(...) not working?
解法:
@JavaScript(Json.stringify(TaskType.valuesJson()));
解释:
Play 使用文件“*.js”的JavaScript 模板格式,因此您需要使用@JavaScript 而不是@Html。了解模板引擎的工作原理后就很清楚了...
来源:
- 帮助到达那里:playframework JsValue in HTML Template
- 帮助到达那里:
Render a Play!Framework2 javascript as template?
- 那里:https://www.playframework.com/documentation/2.3.x/JavaCustomTemplateFormat
- 那里:https://www.playframework.com/documentation/2.2.x/api/scala/index.html#play.api.templates.JavaScriptFormat$
描述:
我正在尝试将 JSON 对象初始化到我的 javascript 模板中。
查看:views.tasks.task.js
@()
@import play.libs.Json
@import enums.TaskType
...
var taskTypes = @Html(@Json.stringify(TaskType.valuesJson()));
模型:任务类型
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"}];
Question: How to do it without escaping? Why is @Html(...) not working?
解法: @JavaScript(Json.stringify(TaskType.valuesJson()));
解释: Play 使用文件“*.js”的JavaScript 模板格式,因此您需要使用@JavaScript 而不是@Html。了解模板引擎的工作原理后就很清楚了...
来源:
- 帮助到达那里:playframework JsValue in HTML Template
- 帮助到达那里: Render a Play!Framework2 javascript as template?
- 那里:https://www.playframework.com/documentation/2.3.x/JavaCustomTemplateFormat
- 那里:https://www.playframework.com/documentation/2.2.x/api/scala/index.html#play.api.templates.JavaScriptFormat$