Grails Upgrade 2.0.1 Errore di convalida dell'oggetto comando
-
28-10-2019 - |
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?
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