6

Javaコードの一部をscalaに変換していますが、特定のヘッダーを取得して文字列として返すことができるようにしたいと考えています。

Javaで私は持っています:

return request().getHeader("myHeader")

私はscalaで同じことを達成することができませんでした。どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

8

あなたは書くことができます:

request.get("myHeader").orNull

Javaラインと本質的に同じものが必要な場合。しかし、あなたはしません!

request.get("myHeader")を返しますOption[String]。これは、nullポインター例外をスローしないコードを作成するように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 に答える