A arquitetura suporta a exibição de mensagens para os usuários através da classe MensagemAviso
. Esta classe possui os seguintes atributos:
Atributo | Descrição |
---|---|
Sistema | Sistema do qual a mensagem faz parte |
SubSistema | SubSistema do qual a mensagem faz parte |
Código | Código da mensagem de aviso |
Classe Constante | Classe que contém a constante que representa a mensagem. |
Tipo | Tipo de mensagem (Erro, Aviso, Informação). |
Mensagem | Texto da mensagem de aviso. |
As mensagens de aviso podem ser cadastradas no banco de dados através do SIGAdmin, no link Config. do Sistema → Mensagens de Aviso → Inserir. Elas são exibidas ao usuário através do método addMensagem(), que recebe como parâmetro o código da mensagem e um conjunto opcional de parâmetros, para formatação da mensagem no estilo String.format.
Os códigos das mensagens ficam em classes com constantes, como por exemplo, a classe br.ufrn.arq.mensagens.MensagensArquitetura
. Cada subsistema deverá ter sua própria classe de constantes para mensagens. Assim, existem classes como MensagensAlmoxarifado
, MensagensBiblioteca
, MensagensDap
, etc.
addMensagem(MensagensArquitetura.OPERACAO_SUCESSO); // Operação realizada com sucesso addMensagem(MensagensArquitetura.CADASTRADO_COM_SUCESSO, "Componente curricular"); // %s cadastrado com sucesso
addMensagem(request, MensagensArquitetura.OPERACAO_SUCESSO); // Operação realizada com sucesso addMensagem(request, MensagensArquitetura.CADASTRADO_COM_SUCESSO, "Componente curricular"); // %s cadastrado com sucesso
Dentro do método validade pode-se usar o método addMensagem(). O problema é que o método validate() de ActionForm, retorna um objeto ActionErrors. Retornar um objeto ActionErrors vazio fará com que a validação não funcione. Assim, o método validade deverá, obrigatoriamente, retornar errors(req).
O método errors irá verificar se houve informação de erros usando o addMensagem(). Se houver, retorna um ActionErrors com uma mensagem vazia, apenas para que a validação funcione. Se não houver, retorna um ActionErrors vazio.
public ActionErrors validate(ActionMapping mapping, HttpServletRequest req) { if (...) { addMensagem(ClasseMensagens.MENSAGEM_INFORMADA); } // ... return errors(req); }
Às vezes, as mensagens de erro são geradas através de ações Ajax, de forma que o tratamento de erros normal não funciona. Para exibir mensagens de erro através de Ajax, é necessário utilizar o método a seguir:
É necessário também incluir na página a JSP /WEB-INF/jsp/include/errosAjax.jsp
.
Atenção: Esses métodos são utilizados em casos de uso com RichFaces, portanto não funcionam com Struts.
Em classes de domínio que implementam a interface Validatable, é possível adicionar mensagens através da classe ListaMensagens
. Esta classe possui métodos para adicionar mensagens de todos os tipos especificados e ainda possibilita adicionar mensagens cadastradas no banco através do método addMensagem()
.
ListaMensagens lista = new ListaMensagens(); lista.addMensagem(MensagensArquitetura.CAMPO_OBRIGATORIO_NAO_INFORMADO);
Crie uma lista de mensagens contendo as mensagens e dispare a exceção passando-a como parâmetro para o construtor. No managed bean ou action onde a exceção for tratada, chamar o método addMensagens()
, passando como parâmetro a lista de mensagens encapsulada na exceção.
// Para disparar a exceção ListaMensagens lista = new ListaMensagens(); lista.addMensagem(...); throw new NegocioException(lista); // Para tratar a exceção try { /* ... */ } catch(NegocioException e) { addMensagens(e.getListaMensagens()); }
Para exibir uma mensagem em uma JSP, pode-se utilizar a EL Function sf:mensagem(), passando como parâmetro a classe e a constante da mensagem. Por exemplo:
${ sf:mensagem('MensagensArquitetura.OPERACAO_SUCESSO') }
Atenção: não é necessário colocar o pacote. A classe informada será buscada nos pacotes informados em pacotes_mensagens.properties
.
Sistema: SIGAdmin
Usuário: david, gleydson
Links:
Logar no SIGAdmin e ir ao cadastro de mensagens de aviso. Testar o cadastro e a listagem de mensagens. Verificar se estão funcionando e se estão dentro dos padrões especificados.