Mensagens de Aviso

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.

Tipos de Mensagem

  • ERROR: Mensagem de erro. Usada quando a operação realizada pelo usuário provocou algum erro.
  • INFORMATION: Mensagem de informação. Usada para informar qualquer coisa ao usuário, como o sucesso da operação que estava executando.
  • WARNING: Mensagem de aviso. Usada quando não houve um erro, mas houve algo que impede o usuário de continuar com o caso de uso.

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.

Exemplo (JSF)

addMensagem(MensagensArquitetura.OPERACAO_SUCESSO); // Operação realizada com sucesso
addMensagem(MensagensArquitetura.CADASTRADO_COM_SUCESSO, "Componente curricular"); // %s cadastrado com sucesso

Exemplo (Struts)

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.

Exemplo

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:

  • addMensagemAjax(String codigo, Object… params)

É 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:

  1. Config. do Sistema → Mensagens de Aviso → Inserir
  2. Config. do Sistema → Mensagens de Aviso → Listar/Alterar

Descrição

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.

  • desenvolvimento/especificacoes/arquitetura/mensagens.txt
  • Última modificação: 2017/04/03 18:10
  • (edição externa)