Incluso en estos casos nos facilita la tarea las validaciones y data bindings de grails. Para utilizar estas facilidades debemos recurrir a las clases Command.
En el siguiente ejemplo usaremos un objeto Command para cambiar un password en el ámbito de un controlador de Usuario.
El primer paso es crear una clase PasswordCommand (podemos incluso crearla dentro del mismo archivo en donde tenemos nuestro controlador).
class PasswordCommand {
String password_actual
String password_nuevo
String password_confirmacion
static constraints = {
password_nuevo(blank:false, minSize:6)
}
}
Esa clase es como cualquiera del dominio, podemos definir las costraints que queramos. Luego sólo falta utilizarla en la acción que necesitemos, en este caso en la acción cambiarPassword:
class UsuarioController{
def cambiarPassword = {PasswordCommand cmd ->
if(!cmd.hasErrors()){
//procesar
}
}
}
Al definir así nuestra acción, Grails creará una instancia de PasswordCommand, haciendo binding de las propiedades que vienen en el request.
Como verán no es un trabajo muy complicado y nos ahorra el trabajo de validar "manualmente" esos parámetros que quedan fuera del dominio.