Domanda

Dopo l'aggiornamento da Grails da 1.3.7 a 2.0.1 Ricevo una strana eccezione di Follwong quando valida l'oggetto di comando all'interno di un controller.

  groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method org.codehaus.groovy.grails.orm.hibernate.HibernateGormValidationApi#validate.
Cannot resolve which method to invoke for [class at.pdts.etsweb.commandobject.UserCommand, null] due to overlapping prototypes between:
    [class java.lang.Object, interface java.util.List]
    [class java.lang.Object, interface java.util.Map]

    at org.grails.datastore.gorm.InstanceMethodInvokingClosure.call(GormEnhancer.groovy:251)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

    at java.lang.Thread.run(Thread.java:662)

Il mio oggetto di comando utente comandi sembra questo:

package at.pdts.etsweb.commandobject

import at.pdts.etsweb.Common
import grails.validation.Validateable

    @Validateable
    class UserCommand { 
        String username
        String password
        String firstname
        String lastname 
        static constraints = {
            username blank: false, email: true
            password blank: false, minSize: 8, maxSize: 64, validator: Common.passwordValidator
            firstname blank: false
            lastname blank: false
        }
    }

Il controller lega i dati come segue:

def save { UserCommand command ->

...
}

A questo punto ricevo il messaggio di errore sopra. Ho anche provato a utilizzare l'oggetto di comando come argomento Salva (comando utente), ma senza alcun effetto. Qualcuno ha qualche suggerimento?

È stato utile?

Soluzione

La mia soluzione alternativa era di spostare le classi di oggetti di comando da /grails-app /controller a /src /groovy. Dopodiché l'errore è scomparso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top