我的目标:了解我可以从控制器发送到查看的参数的限制(如果有)。现在,我正在检查是否可以从控制器函数向视图发送任何Twirl的关键字(例如@,@ for等),然后使用JS重新加载页面的一部分。
我们可以在控制器函数中使用as(HTML)
时将原始HTML传递给视图。但是,是否可以从控制器的函数向视图的相关JS函数发送一个scala.html
类型代码块及其所有语法糖;这样它可以在相关的div中显示出来吗?例如,我如何/可以通过以下内容:
<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:
那么有办法吗?或者所有模板相关引擎的关键字都不能从控制器发送到视图?并且只需要在视图文件上使用。
答案 0 :(得分:1)
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))