6

我正在将我的一些 java 代码转换为 scala,我希望能够获取特定的标头并将其作为字符串返回。

在java中我有:

return request().getHeader("myHeader")

我一直无法在 scala 中实现同样的目标。任何帮助将不胜感激!谢谢!

4

2 回答 2

8

你可以写:

request.get("myHeader").orNull

如果您想要与您的 Java 线基本相同的东西。但你没有!

request.get("myHeader")返回一个Option[String],这是 Scala 鼓励您编写不会引发空指针异常的代码的方式。

您可以通过Option各种方式处理。例如,如果您想提供默认值:

val h: String = request.get("myHeader").getOrElse("")

或者,如果您想对标头执行某些操作(如果它存在):

request.foreach { h: String => doSomething(h) }

要不就:

request foreach doSomething

有关更多可能性,请参阅此备忘单

于 2012-07-20T18:57:21.513 回答
5

接受的答案不适用于带有 playframework 2.2 的 scala:

request.get("myHeader").getOrElse("")

它给了我以下错误:

值 get 不是 play.api.mvc.Request[play.api.mvc.AnyContent] 的成员

在下面使用

request.headers.get("myHeader").getOrElse("") 
于 2014-05-19T08:57:35.690 回答