Aggiorna un campo Se il valore è fornito sulla vista o mantenere il valore precedente
-
13-12-2019 - |
Domanda
Sono un graal e Groovy Newbie. Sto cercando di aggiornare un campo nella classe del mio dominio, a condizione che il valore per il campo sia fornito dall'utente nella vista "Modifica".
La mia classe di dominio sembra: Class CertificationInfo {
static auditable = [ignore:['dateCreated','lastUpdated','account']]
String entityId
String certificate
String status
Timestamp dateCreated
Timestamp lastUpdated
Account account
CertificateInfo(){
status = "ACTIVE"
}
static belongsTo = [account: Account]
//Db mappings not included
static constraints = {
entityId size: 1..300, blank: false, unique: true
certificate size: 1..4000, blank:false
status in:['ACTIVE','INACTIVE'], blank: false
}
}
.
Nel mio modulo di modifica, il campo pertinente è:
<td>
<input type="file" name="certificate" value="${CertificateInfo ?.certificate}"/>
</td>
.
Quello che vorrei fare qui è: a) Se il nuovo file viene fornito, quindi sul tasto clic, questo file deve essere accettato come certificato.Questa porzione funziona e il nuovo file viene utilizzato per aggiornare il certificato b) Se non viene fornito un nuovo file, dovrebbe solo mantenere il vecchio valore.Questa porzione non funziona perché non so come affrontarla.
Sarei felice per qualsiasi suggerimento.
Grazie!
Soluzione
Questo è delineato nella Guida per l'uso - http://grails.org/DOC / Ultima / Guida / TheWebLayer.html # uploadingFiles
Usando il primo esempio, faresti qualcosa come
def f = request.getFile('certificate')
if (f.empty) {
// do nothing
} else {
f.transferTo(new File('/some/local/dir/myfile.txt'))
// modify your object here and save.
mycertificate.certificate = 'myfile.txt'
}
.