2012-07-20 14 views
6

私はいくつかのJavaコードをscalaに変換しています。特定のヘッダを取得して文字列として返すことができるようにしたいと考えています。scala play 2.0 get request header

私はJavaで

:私はScalaで同じことを達成することができなかった

return request().getHeader("myHeader") 

。どんな助けでも大歓迎です!ありがとう!

+0

http://stackoverflow.com/questions/11198998/scala-play-2-passing-request-to-method トラヴィス・ブラウンの答え以下のコメントを参照してください。 – user1253952

答えて

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を参照してください。

+0

ありがとう! null/Optionの場合も処理する必要があることに注意してください。多分私はより基本的な問題を抱えているでしょう。エラーが発生しました "見つかりませんでした:値の要求"。 – user1253952

+0

どこを使ってみようとしていますか? –

+0

非常に基本的な方法で私のコントローラファイルの一つで: def getName = request.get( "myHeader") – user1253952

4

私はplayframework 2.2とScalaのための答えの上にしようとしたとき:これが機能するようになりました

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

value get is not a member of play.api.mvc.Request[play.api.mvc.AnyContent]

私が使用:

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

それは私に以下のエラーが発生します。これを使用することをお勧めします。また