Domanda

Sto cercando di capire come grails 2.3.4 I metodi di impalcatura generati sono di convalida.Ad esempio, questo è quello che è stato generato per il metodo di salvataggio del dominio del mio club:

def save(Club clubInstance) {
    if (clubInstance == null) {
        notFound()
        return
    }

    if (clubInstance.hasErrors()) {
        respond clubInstance.errors, view:'create'
        return
    }

    clubInstance.save flush:true

    request.withFormat {
        form {
            flash.message = message(code: 'default.created.message', args: [message(code: 'clubInstance.label', default: 'Club'), clubInstance.id])
            redirect clubInstance
        }
        '*' { respond clubInstance, [status: CREATED] }
    }
}
.

Da ciò che compreso la prima fase di convalida è avvenuta al rilegatura dei dati al parametro Club Clubinstance dell'Azione di salvataggio.Quindi eventuali errori di rilegatura dei dati saranno catturati su se (cluminstance.haserrors ()).

Non vedo alcuna chiamata esplicita a cluminstance.validate () o qualsiasi controllo di errore su cluminstance.Save come suggerisce la documentazione.Sembra funzionare comunque.Quindi, come funziona questo metodo e tornare alla vista se ci sono violazioni vincoli?

Ancora più importante non dovremmo usare i controller di impalcature generati come il modo migliore per fare il carrello di base a Graal?

È stato utile?

Soluzione

Quando si includono i parametri nei metodi di azione del controller, i graali eseguiranno il databanting per loro.Per tipi semplici come stringhe, numeri, booleani, ecc. Il nome del parametro è abbinato ai nomi dei parametri e se c'è una corrispondenza e un modo ragionevole per convertire la stringa di parametro nel tipo richiesto, è fatto per te.

Per i tipi complessi, il parametro viene considerato come un oggetto di comando.Se è definito nella classe del controller è effettuato convalidabile al momento della compilazione tramite una trasformazione AST.Se la classe è definita altrove (ad es. SRC / Groovy) deve essere annotata con l'annotazione grails.validation.Validateable, e se è una classe di dominio, è ovviamente validabile.In ogni caso, dopo che viene creata l'istanza e il rilegato dati, convalida () viene richiesto.

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