Atualize um campo se o valor for fornecido na visualização ou mantenha o valor anterior

StackOverflow https://stackoverflow.com//questions/11697156

  •  13-12-2019
  •  | 
  •  

Pergunta

Eu sou um graal e um novato descolado.Estou tentando atualizar um campo em minha classe de domínio, desde que o valor do campo seja fornecido pelo usuário na visualização "Editar".

Minha classe de domínio se parece com:class CertificadoInfo {

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
}
}

No meu formulário de edição, o campo relevante é:

<td>
<input type="file" name="certificate" value="${CertificateInfo ?.certificate}"/>
</td>

O que eu gostaria de fazer aqui é:a) se o novo arquivo for fornecido ao clicar no botão, este arquivo deverá ser aceito como certificado.Essa parte funciona e o novo arquivo é usado para atualizar o certificado b) se um novo arquivo não for fornecido, então ele deve apenas manter o valor antigo.Esta parte não funciona porque não sei como abordá-la.

Eu ficaria feliz com qualquer sugestão.

Obrigado!

Foi útil?

Solução

Isso está descrito no guia do usuário - http://grails.org/doc/latest/guide/theWebLayer.html#uploadingFiles

Usando o primeiro exemplo, você faria algo como

 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'  
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top