Pregunta: ¿hay alguna manera de hacer un enlace de objeto de comando automático con datos request.JSON?Grails Objeto de comando: ¿Cómo cargar request.JSON en él?
Dado este objeto simple comando en mi controlador de griales:
class ProfileCommand{
int id
String companyName
static constraints = {
companyName blank: false
id nullable: false
}
@Override
public String toString() {
return "ProfileCommand{id=$id, companyName='$companyName'}";
}
}
y mi controlador de método de firma de:
def update(ProfileCommand command) {...}
¿Cómo puedo obtener request.JSON
datos en mi objeto de comando?
Hasta ahora, la única manera que he sido capaz de hacerlo es crear el objeto de comando manualmente dentro del método update()
, pasando request.JSON como el argumento del constructor:
def command = new ProfileCommand(request.JSON)
log.debug "Command object contents: $command"
La depuración por encima de comando produce:
Command object contents: ProfileCommand{id=1, companyName='Blub Muckers'}
Que es exactamente lo que quiero (Un gran agradecimiento a Oliver Tynes por la solución anterior). Por desgracia, llamando command.validate()
después de crear el comando produce la siguiente excepción:
Class org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
Message Tag [validate] is missing required attribute [form]
estoy usando v2.0.3, URIs producen la misma excepción w/v2.0.4.
ACTUALIZACIÓN por Ian Roberts en los griales lista de correo, es necesario agregar la anotación @Validateable
a la clase de comando para obtener validate()
para trabajar. Gracias, Ian!
Esto funcionaría. Lo marcaré como la respuesta a menos que alguien más tenga otra sugerencia. Gracias, Aquatoad! –
Me alegra ayudar. Eliminaré también el bit que está fijado por la anotación @Validateable. – Aquatoad
reemplace params.k = v con params [k] = v - de lo contrario no funcionará ... –