====== 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.