Problema en campo tipo date

17 views
Skip to first unread message

sirdaiz

unread,
Oct 5, 2018, 4:53:53 AM10/5/18
to grailsEnCastellano
Tengo lo sgte:

    class ActionPlanTemplate implements Serializable{
        String name

        static hasMany = [actionPlans: ActionPlan]
        ......
    }

    class ActionPlan implements Serializable{
        String modelName
        Date realStartDate
        ......
    }

En mi form:

    <td><input type="text" mydatepicker name="actionPlans[{{num}}].realStartDate" ng-model="actionTemplate.actionPlans[num].realStartDate"/></td>

In my controller I will try save ActionPlanTemplate with their ActionPlans:

    def save(ActionPlanTemplate apt) {
        def method = "save"
        def result, actionPlans = []
       
        try {                       
            ActionPlanTemplate.withTransaction {   
                println apt
               
                apt.actionPlans.each{ ap ->
                    ap.realStartDate = new Date()
                    println "b" + ap.realStartDate
                    if (!ap.save(flush:true)) {
                        ap.errors.allErrors.each { println it }
                    }
                }
               
                if (!apt.save(flush:true)) {
                    apt.errors.allErrors.each { println "i------" + it }
                }
               
                println apt.actionPlans
            }

            return redirect (controller:'actionPlanTemplate', action: 'index')
        } catch (Exception e){println "e---------" + e}
    }


El error que estoy cogiendo es:

Field error in object 'com.analysis.model.ActionPlan' on field 'startDate': rejected value [10/03/2018]; codes [com.analysis.model.ActionPlan.startDate.typeMismatch.error,com.analysis.model.ActionPlan.startDate.typeMismatch,actionPlan.startDate.typeMismatch.error,actionPlan.startDate.typeMismatch,typeMismatch.com.analysis.model.ActionPlan.startDate,typeMismatch.startDate,typeMismatch.java.util.Date,typeMismatch]; arguments [startDate]; default message [Unparseable date: "10/03/2018"]








Iván López

unread,
Oct 5, 2018, 4:59:59 AM10/5/18
to grailsEnCastellano
Hola,

El error ocurre en el campo "startDate" que no veo definido en tus clases de dominio.

Y unos comentarios sobre el código que yo cambiaría:
- En lugar de hacer "ap.realStartDate = new Date()" en el controller puedes definir la clase de dominio como "Date realStartDate = new Date()"
- Veo muchos "def"
- Sería mejor mover esa lógica a un servicio transaccional y que el controller sólo valide los parámetros y lo llame.

Saludos, Iván.

--
Has recibido este mensaje porque estás suscrito al grupo "grailsEnCastellano" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a grailsencastell...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a grailsenc...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/grailsencastellano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

sirdaiz

unread,
Oct 5, 2018, 5:05:31 AM10/5/18
to grailsEnCastellano
Hola Ivan, gracias por tu respuesta, al elimianr codigo se me paso ponerlo pero si existe:

- En lugar de hacer "ap.realStartDate = new Date()" en el controller puedes definir la clase de dominio como "Date realStartDate = new Date()"
Realmente la intencion es que cojo lo que viene del formulario no hacer el new Date() ni en el controlador ni en el domain

Si te das cuenta en el error pone: "10/03/2018", esto es lo que pongo en el form
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a grailsencastellano+unsub...@googlegroups.com.

Iván López

unread,
Oct 5, 2018, 5:12:58 AM10/5/18
to grailsEnCastellano
¿Qué versión de grails estás usando?

Si el formato que usas no está dado de alta por defecto (no recuerdo ahora mismo cuales están) prueba con esto: http://docs.grails.org/latest/guide/theWebLayer.html#_date_formats_for_data_binding

Por cierto, en el Slack de Grails hay un canal en español por si te interesa. Te puedes apuntar desde aquí: https://grails-slack.cfapps.io/

Saludos, Iván.

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a grailsencastell...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a grailsenc...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/grailsencastellano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito al grupo "grailsEnCastellano" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a grailsencastell...@googlegroups.com.

sirdaiz

unread,
Oct 5, 2018, 5:26:28 AM10/5/18
to grailsEnCastellano
Gracias Iván mi solución fue poenr esto en el domain:

    @BindingFormat('MM/dd/yyyy')
    Date realStartDate

Me apuntare al Slack de Grails

Un saludo
Reply all
Reply to author
Forward
0 new messages