Introdução
As ações de CRUD no JARCH já estão implícitas no menu de lista, sendo elas Incluir, Clonar, Alterar, Consultar e Excluir. Mas existe situações que precisamos de uma ação diferente, pelo menos com a descrição diferente do CRUD, como por exemplo, Ativar, Inativar, Bloquear, Desbloquear, etc... O JARCH suporta essas ações, através de ações dinâmicas. Existem 3 tipos dessas ações no JARCH. A primeira que veremos nesse Post é a ação dinâmica direta.
@JArchDynamicDirect
Para configurar essa ação é necessário anotar um método dentro da Action de Lista. Segue um exemplo abaixo dessa definição abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @ArchViewScoped public class ListaLancamentoAction extends CrudListAction<LancamentoEntity, LancamentoFacade> implements Serializable { @JArchDynamicDirectAction(order = 1, id = "baixarVencimento", labelMenu = "label.baixarVencimento", headerConfirmation = "message.confirmacao", messageConfirmation = "message.confirmaBaixaTotalVencimento", elDisabled = "#{(l -> l.isLancamentoPago())(lancamento)}") public void baixaTotalVencimento(LancamentoEntity lancamento) { getFacade().baixaTotalVencimento(lancamento.getId()); } @JArchDynamicDirectAction(order = 2, id = "baixarHoje", labelMenu = "label.baixarHoje", headerConfirmation = "message.confirmacao", messageConfirmation = "message.confirmaBaixaTotalHoje", elDisabled = "#{(l -> l.isLancamentoPago())(lancamento)}") public void baixaTotalHoje(LancamentoEntity lancamento) { getFacade().baixaTotalHoje(lancamento.getId()); } @JArchDynamicDirectAction(order = 3, id = "cancelarBaixa", labelMenu = "label.cancelarBaixa", headerConfirmation = "message.confirmacao", messageConfirmation = "message.cancelaBaixa", elDisabled = "#{(l -> not l.isLancamentoPago())(lancamento)}") public void cancelaBaixa(LancamentoEntity lancamento) { getFacade().cancelaBaixa(lancamento.getId()); } |
Reparem que foram definidos 3 ações dinâmicas, 1 baixa vencimento, 1 baixa hoje e 1 cancelamento de baixa. Segue uma breve descrição dos atributos utilizados na anotação:
order: Para definir a ordem das ações no menu
id: Para controle de acesso
labelMenu: Chave no bundle da descrição do menu
headerConfirmation: Título no popup para confirmação da ação dinâmica
messageConfirmation: Mensagem no popup para confirmação da ação dinâmica
elDisabled: Expressão lambda para definição do atributo disabled do menu. Nesse exemplo acima para as ações de baixa o disabled será true caso a conta esteja paga. Para a ação cancelamento o menu só ficará habilitado caso a conta esteja baixada.
Segue um print dessas ações no menu.
Existem outros atributos, como elRendered, icon, evaluateRendered, evaluateDisabled.
Conclusão
As ações dinâmicas facilitam bastante o desenvolvimento de telas com ações específicas, no próximo post veremos um outro tipo de ação dinâmica.
Até mais,
Nenhum comentário:
Postar um comentário