5

使用 Play 2 我正在实现一个简单的 REST API,输出是纯文本。我的模板如下所示:

@(items: Map[String,String]) 
@for((key, value) <- items) {
@value
@key
}

在控制器中:

return ok(views.html.bla.render(itemsMap)).as("text/plain");

这给出了以下输出:

(empty line)
(empty line)
value
key
(empty line)
value
key

我想摆脱前 2 个空行 - 这可能吗?

将 for 放在第一行会删除顶部的一个空行,但是仍然保留一个空行,并且第一行中的 for 使模板难以阅读):感谢您的任何提示!

4

2 回答 2

4

首先,如果您使用纯文本,您应该使用 txt 模板 ( bla.scala.txt)。他们还自动设置text/plain; charset=utf-8 内容类型。

要修剪内容,可以直接返回渲染的内容:

return ok(views.txt.bla.render(itemsMap).body().trim());

如果您想呈现 HTML 内容,则需要手动更改:

return ok(views.html.ble.render().body().trim()).as("text/html; charset=utf-8");
于 2012-12-31T15:45:31.527 回答
1

如果您从地图生成纯文本输出,为什么要使用视图?它们对您的情况没有任何好处。

您可以在纯 Scala 中编写渲染函数。就像是

items.map{ case (k,v) => v + '\n' + k}.mkString('\n')
于 2012-12-31T15:39:58.073 回答