2010-10-26 11 views
5

Sto utilizzando il plug-in Grails Webflow. Qui ci sono gli oggetti di dominio con cui sto lavorando:Come faccio a simulare un errore di convalida?

class Foo implements Serializable { 
    String fooProp1, 
      fooProp2 

    static constraints = { 
     fooProp2 nullable: false 
    } 
} 

class Bar implements Serializable { 
    Foo fooObject 

    static constraints = { 
     fooObject nullable: false 
    } 
} 

in un punto nel webflow, ho bisogno di fare in modo che fooObject.fooProp1 non è nullo. Se lo è, voglio lanciare un errore e costringere l'utente a fornirgli un valore. Ho provato a usare validate() per fare questo (su entrambi gli oggetti Bar e Foo), ma poichè fooProp1 ha la proprietà nullable: true, passa la validazione. Qualche idea?

+0

Sono un po 'confuso - se questo è il caso, la proprietà non dovrebbe essere "nullable: false"? Puoi chiarire perché non puoi aggiungere il vincolo al tuo dominio? Questa è la soluzione più ovvia per me, immagino. –

+0

Bene, gli oggetti Foo possono esistere nel database senza fooProp1 specificato. Tuttavia, durante il flusso web, questa proprietà non deve essere nulla, poiché viene utilizzata alla fine del processo di flusso del web. – Pat

risposta

10

probabilmente si può fare questo nel Flusso Web adattando il seguente codice:

if(fooObject.fooProp1 == null) { 
    fooObject.errors.rejectValue('fooProp1', 'nullable') 
} 

Il secondo argomento di questo metodo, 'nullable', potrebbe essere diverso per la situazione. Dovrai solo impostarlo sul codice del messaggio (da message.properties) per visualizzare il messaggio di errore che desideri.

Dai un'occhiata a here per altri modi di utilizzare reject() e rejectValue().

+0

Grazie, questo è quello che stavo cercando. – Pat

+0

Sì, nessun problema. –

Problemi correlati