Olá pessoal,
estou criando um projeto com Grails 3.0.4 e tive um problema para fazer o download e exibir uma imagem na tela.
ERRO:MessageRequest processing failed; nested exception is org.grails.gsp.GroovyPagesException: Error evaluating expression [createLinkTo(controller:'vistoria', action:'showFoto', id:'1')] on line [377]: No such property: AssetPipelineConfigHolder for class: asset.pipeline.grails.CachingLinkGeneratorCaused byNo such property: AssetPipelineConfigHolder for class: asset.pipeline.grails.CachingLinkGenerator
De acordo com o link abaixo, parece que esse erro foi resolvido em versões posteriores do "asset-pipeline":
https://github.com/grails/grails-core/issues/9145
Então estou tentando atualizar a versão do Grails no meu projeto. Fiz o seguinte:
Baixei a ultima versão (3.0.9) no site do grails
Configurei a GRAILS_HOME
Atualizei o arquivo gradle.properties (alterado para grailsVersion=3.0.9)
Dúvida: Essas alterações são suficientes para dizer que meu projeto está atualizado para a versão 3.0.9?
Acredito que não pois o erro continua e analisando a pilha do erro é possível ver que o projeto ainda está utilizando o asset-pipeline-3.0.5:
...
at asset.pipeline.grails.CachingLinkGenerator.asset(CachingLinkGenerator.groovy:32) ~[asset-pipeline-3.0.5.jar:na]
...
Segue a minha implementação da exibição de imagem:
def showFoto(long id) {
def foto = Foto.get(id)
response.setContentType('image/jpg')
response.setHeader('Content-disposition', 'attachment;filename=imagem.jpg')
response.setHeader('Content-Length', foto.arquivo.length)
response.outputStream << foto.arquivo
}
//GSP:
<img src="${createLinkTo(controller:'vistoria', action:'showFoto', id:1)}"/>