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))