HTML模板中的playframework JsValue

Posted

技术标签:

【中文标题】HTML模板中的playframework JsValue【英文标题】:playframework JsValue in HTML Template 【发布时间】:2014-08-10 04:20:03 【问题描述】:

我正在尝试在模板中使用 play (v2.2.2) 的 JsValue 定义一个 json 对象。问题是," 被转换成"

@(org: db.Tables.OrganizationRow)

@import models.format.EntityFormat._
@import play.api.libs.json.Json

<script  type="text/javascript">
    var org = @Json.toJson(org);
</script>

结果:

&quot;id&quot;:16,&quot;userid&quot;:&quot; ... more data ... ;

如何在 scala html 模板中获取正确的 json?

【问题讨论】:

【参考方案1】:

将其定义为Html,这样它就不会自动转义。

var org = @Html(Json.stringify(Json.toJson(org)));

【讨论】:

顺便问一下,@Javascript,@Txt 是干什么用的?它们和@Html 在同一个包中,但我认为它们什么都不做。 @Renkai 如果您首先使用不同类型的模板,则使用它们。例如,在views/foo.scala.js 中,您将使用@JavaScript(bar) 对值bar 进行原始(非JS 转义)输出。正如文档所说:“如果要输出原始内容片段,请将其包装在模板内容类型中”(即 @Html 用于 .html,@Javascript 用于 .js) 这种方法对于受信任的数据是正确的,但一般来说并不安全(如果任何数据不受信任,那么攻击者可以使用“”或“uploadcare.com/blog/vulnerability-in-html-design。 Play 目前还没有针对此上下文提供的完全安全的转义机制。

以上是关于HTML模板中的playframework JsValue的主要内容,如果未能解决你的问题,请参考以下文章

Playframework2 中的 Scala 模板

Playframework:是不是可以在模板中将参数传递给模型的 getter?

laravel 刀片模板中的 Vue.js v-for 循环

Play Framework 1.2.4:#select 模板的选定选项

playframework,需要一个好的创建、更新、删除示例使用相同的 html 页面

Play Framework 2.4 在 Scala 模板中使用注入变量