Introdução
Nesse post veremos o último tipo de ação dinâmica do JARCH. Essa ação dinâmica é usada para fazer download e é invocado direto do menu.
@JArchDynamicDownload
Para configurar essa ação é necessário anotar o método da classe da Action de Lista. Segue um exemplo abaixo dessa definição abaixo:
Reparem que foi definidos 1 ação dinâmica de download. Esse método tem que retonar um StreamedContent. Segue uma breve descrição dos atributos utilizados na anotação:
order: Para definir a ordem das ações no menu1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @JArchViewScoped public class PapelTrabalhoListAction extends CrudListAction<PapelTrabalhoEntity, PapelTrabalhoFacade> { @Override public String getPageData() { return "papelTrabalhoData.jsf"; } @JArchDynamicDownload(order = 1, id = "baixarPapelTrabalho", labelMenu = "label.download", icon = "ui-icon-document-b") public StreamedContent baixa(PapelTrabalhoEntity papelTrabalhoEntity) throws Exception { File fileDoc = File.createTempFile(papelTrabalhoEntity.getNomeArquivo(), ".DOCX"); FileUtils.save(fileDoc, papelTrabalhoEntity.getArquivo()); JsfUtils.addMessageInfo(BundleUtils.messageBundle("message.downloadPapelTrabalhoComSucesso")); FacesContext.getCurrentInstance().responseComplete(); return new DefaultStreamedContent(new FileInputStream(fileDoc), FileType.DOC.getContentType(), papelTrabalhoEntity.getNomeArquivo()); } } |
Reparem que foi definidos 1 ação dinâmica de download. Esse método tem que retonar um StreamedContent. Segue uma breve descrição dos atributos utilizados na anotação:
id: Para controle de acesso
labelMenu: Chave no bundle da descrição do menu
icon: Ícone no menu
E selecionando a opção de Baixar:
Conclusão
Esse post complete a série de ações dinâmicas, essas ações dinâmicas são ferramentas poderosas econmizando um grande tempo de desenvolvimento e extraindo a complexidade.
Até mais,
Nenhum comentário:
Postar um comentário