Playframework 2.x (Scala):将 Twirl/HTML 代码从控制器的函数传递到视图
Playframework 2.x (Scala): Passing a Twirl/HTML code from a controller's function to the view
我的目标:了解我可以从控制器发送以查看的参数的限制(如果有的话)。现在,我正在检查是否可以将任何 Twirl 的关键字(例如,@、@for 等)从控制器函数发送到视图,然后使用 JS 重新加载页面的一部分。
我们可以在控制器函数中使用 as(HTML)
时将原始 HTML 传递给视图。但是,是否可以将 scala.html
类型的代码块及其所有语法糖从控制器的函数发送到视图的相关 JS 函数?以便它可以在相关的 div 中显示它?例如 how/can 我可以传递以下内容:
<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>
如果我将以上内容包装在控制器函数中:
Ok(<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>).as(HTML)
理所当然,我会得到以下错误;因为代码不纯 HTML:
那有办法吗?或者所有与模板相关的引擎关键字都不能从控制器发送到视图?并且只需要在视图的文件上使用。
twirl 代码在服务器上编译为常规 scala 函数(参见 https://www.playframework.com/documentation/2.5.x/ScalaTemplateUseCases#Tags-%28they-are-just-functions,-right?%29)
例如,您可以创建一个类似 renderItems.scala.html
的文件
@(items: List[Item])
<p style="padding:1rem;"> @for(i <- items){<h2>@i.name</h2} </p>
并这样称呼它
Ok(renderItems(items))
我的目标:了解我可以从控制器发送以查看的参数的限制(如果有的话)。现在,我正在检查是否可以将任何 Twirl 的关键字(例如,@、@for 等)从控制器函数发送到视图,然后使用 JS 重新加载页面的一部分。
我们可以在控制器函数中使用 as(HTML)
时将原始 HTML 传递给视图。但是,是否可以将 scala.html
类型的代码块及其所有语法糖从控制器的函数发送到视图的相关 JS 函数?以便它可以在相关的 div 中显示它?例如 how/can 我可以传递以下内容:
<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>
如果我将以上内容包装在控制器函数中:
Ok(<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>).as(HTML)
理所当然,我会得到以下错误;因为代码不纯 HTML:
那有办法吗?或者所有与模板相关的引擎关键字都不能从控制器发送到视图?并且只需要在视图的文件上使用。
twirl 代码在服务器上编译为常规 scala 函数(参见 https://www.playframework.com/documentation/2.5.x/ScalaTemplateUseCases#Tags-%28they-are-just-functions,-right?%29)
例如,您可以创建一个类似 renderItems.scala.html
的文件@(items: List[Item])
<p style="padding:1rem;"> @for(i <- items){<h2>@i.name</h2} </p>
并这样称呼它
Ok(renderItems(items))