【问题标题】:playframework JsValue in HTML TemplateHTML模板中的playframework JsValue
【发布时间】: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?

【问题讨论】:

    标签: html json scala playframework


    【解决方案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 目前还没有针对此上下文提供的完全安全的转义机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2013-07-21
    相关资源
    最近更新 更多