我正在将我的一些java代码转换为scala,我希望能够获得一个特定的标头并将其作为字符串返回。
在java中我有:
return request().getHeader("myHeader")
我无法在scala中实现同样的功能。任何帮助将不胜感激!谢谢!
答案 0 :(得分:7)
你可以写:
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
有关更多可能性,请参阅this cheat sheet。
答案 1 :(得分:4)
当我尝试使用playframework 2.2上面的scala回答:
request.get("myHeader").getOrElse("")
它给出了以下错误:
值get不是其成员 play.api.mvc.Request [play.api.mvc.AnyContent]
当我使用时:
request.headers.get("myHeader").getOrElse("")
这现在有效。我建议用这个。