====== 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.
===== Mensagens Cadastradas =====
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 [[http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object...)|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
===== Mensagens em ActionForms =====
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);
}
===== Mensagens por Ajax =====
À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.
===== Mensagens em Classes de Domínio =====
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);
===== Mensagens em NegocioException =====
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());
}
===== Mensagens em JSPs =====
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''.
===== Plano de Testes =====
Sistema: SIGAdmin
Usuário: david, gleydson
Links:
- Config. do Sistema → Mensagens de Aviso → Inserir
- 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.