Estoy implementando una aplicación web usando el framework de reproducción scala 2.0.2. Me gustaría extraer y validar una serie de parámetros de obtención. Y para esto estoy usando una "forma" de juego que me permite definir campos opcionales.Cómo definir valores predeterminados campos opcionales en formularios de marcos de juego?
Problema: Para esos campos opcionales, necesito definir un valor predeterminado si el parámetro no se pasa. El código está destinado a analizar correctamente estos casos tres uso:??
- /test top = abc (error, abc no es un entero)
- /test top = 123 (válido, la parte superior es de 123)
- /prueba (válida, la parte superior es de 42 (valor por defecto))
he llegado con el siguiente código:
def test = Action {
implicit request =>
case class CData(top:Int)
val p = Form(
mapping(
"top" -> optional(number)
)((top) => CData($top.getOrElse(42))) ((cdata:CData) => Some(Some(cdata.top)))
).bindFromRequest()
Ok("all done.")
}
El código funciona, pero definitivamente no es elegante. Hay una gran cantidad de placa de caldera funcionando solo para configurar un valor predeterminado para un parámetro de solicitud faltante.
¿Alguien puede sugerir una solución más limpia y más coincidente?
Esta solución propuesta funciona bien. El único inconveniente de esta solución desafortunadamente es que no escala bien con una gran cantidad de parámetros predeterminados. Cuando crea un servicio web/aplicación web que debe admitir el filtrado de listados, exponer todos los parámetros predeterminados en la ruta puede reducir la legibilidad y la legibilidad del código.En todos los demás escenarios, esta es de hecho la solución preferida – natbusa
Respuesta actualizada con una implementación de método auxiliar que puede resultarle útil. – lambdas
He propuesto una extensión para el marco de juego, para programar un enfoque más codificado sobre los parámetros predeterminados. Ver https://github.com/playframework/Play20/pull/381 – natbusa