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>
结果:
"id":16,"userid":" ... 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的主要内容,如果未能解决你的问题,请参考以下文章
Playframework:是不是可以在模板中将参数传递给模型的 getter?
laravel 刀片模板中的 Vue.js v-for 循环
Play Framework 1.2.4:#select 模板的选定选项