2012-07-20 30 views
6

Estoy convirtiendo parte de mi código java a scala y me gustaría poder obtener un encabezado específico y devolverlo como una cadena.scala play 2.0 get request header

en Java que tienen:

return request().getHeader("myHeader") 

no he sido capaz de lograr lo mismo en Scala. ¡Cualquier ayuda sería muy apreciada! ¡Gracias!

+0

http://stackoverflow.com/questions/11198998/scala-play-2-passing-request-to-method también ver comentarios a continuación la respuesta de Travis Brown. – user1253952

Respuesta

7

Se puede escribir:

request.get("myHeader").orNull 

Si quería algo esencialmente el mismo que su línea de Java. ¡Pero tú no!

request.get("myHeader") devuelve Option[String], que es la forma en que Scala lo anima a escribir código que no arroje excepciones de puntero nulo.

Puede procesar el Option de varias maneras. Por ejemplo, si desea proporcionar un valor por defecto:

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

O si usted quiere hacer algo con el encabezado si existe:

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

O simplemente:

request foreach doSomething 

Ver this cheat sheet para más posibilidades.

+0

¡Muchas gracias! noté que también debería manejar el caso nulo/Opción. Tal vez estoy teniendo un problema más básico. Me sale el error "no encontrado: solicitud de valor". – user1253952

+0

¿Dónde intentas usarlo? –

+0

En uno de mis archivos de controlador, en un método muy básico: def getName = request.get ("myHeader") – user1253952

4

Cuando probé por encima de respuesta para Scala con playframework 2.2:

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

Me da el siguiente error:

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

Cuando uso:

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

Esto ahora funciona . Sugiero usar esto.