Summary
Keywords
Full Transcript
Olá pessoal, meu nome é Sergio, e sejam bem-vindos ao curso de programação Web. Nessa videoaula, eu vou dar uma pausa um pouco no cadastro do fabricante para resolver um problema que nosso projeto tinha. Se você lembrar, em nenhum momento, a gente está dando mensagem de sucesso e nem mensagem de erro na nossa aplicação. Na verdade, a mensagem erro, a gente está mostrando no console do Eclipse.
Mas se a gente rodar a aplicação e der o erro, o uso água não vai ver a mensagem. Então, nessa videoaula, eu vou mostrar para vocês como a gente pode adicionar mensagens na nossa aplicação. Para fazer isso, eu vou usar um componente que o CarmeFaces fornece para a gente. Então, vou entrar no meu navegador.
Já estou com o site do Showcase aberto. Vocês vão ter que entrar no site do CarmeFaces. Vocês vão procurar aqui no site do Showcase do CarmeFaces. Essa opção aqui é a mensagem.
Na opção mensagem, eu estou interessado nessa opção aqui chamado Growl. Vou entrar nela para mostrar para vocês o que é o Growl. Por exemplo, aqui está um exemplo de tal meu nome. Então, vou escrever Sergio e vou pressionar o botão Save.
Essa janela que abriu aqui na direita é o Growl. Os nossos erros e os nossos sucesso, eu vou mostrar através desse componente aqui. Então Growl, nada mais é do que uma mensagem flutuante que aparece aqui no canto superior de gaito. E para fazer ele, é bem simples.
Basta você usar esse comando aqui que é o Growl, que está aqui na linha 3. E aí, eu vou mostrar no nosso projeto para vocês algumas propriedades e alguns detalhes. Então, vou voltar para o eclipse e começar a aplicar o nosso projeto. A primeira coisa que eu vou fazer antes de fazer o Growl, eu vou ter que fazer uma forma viajava que eu possa adicionar mensagem de sucesso e que possa adicionar mensagem de erro.
Certo, vamos fazer isso então. Para fazer isso, vou expandir o projeto da drogaria, vou expandir o Java Researches, vou expandir o SRC. Agora, a gente vai usar o último pacote que nós não tínhamos usado ainda, o pacote Util. Dentro do pacote Util, eu vou criar uma classe que eu vou chamá-la de Jsf Util.
O que eu vou colocar dentro do Jsf Util? Dentro do Jsf Util, eu vou colocar funções utilitárias. Dentro dessas funções utilitárias, eu vou colocar uma função para colocar uma mensagem de sucesso e para colocar uma mensagem de erro. Então, para a gente começar, então, clica com um botão de gaito do mouse no Util.
Aí, você vai escolher a opção nil, aí, você escolha a opção class. Na opção nil, você vai escrever Jsf, tudo com letra maiúsculo, e aí, você vai escrever a palavra Util, que é uma boiviatura de utilitário, com o maiúsculo. As demais opções, você pode deixar padrão e pressiona o botão Finix. Agora, aqui dentro, eu vou codificar duas funções.
A primeira função que eu vou criar, então, vai ser a função relacionada à mensagem de sucesso. Detalhe, eu vou criar ele com o método estático, porque como eu vou usar muito esse Jsf Util, eu não quero ficar instanciando ele. Então, eu vou criar os métodos como estático. Então, eu vou criar um método público, ele vai ser estático, ele não vai ter retorno, então, ele vai ser Voide, aí, eu vou chamar ele de adicionar mensagem de sucesso.
Abro e pagantes, aí, eu vou colocar aqui dentro um pagâmmetro, no caso, vai ser uma string que vai ser uma mensagem. Então, o meu método vai ser adicionar mensagem de sucesso. Ele vai receber qual é a mensagem que eu quero adicionar. Aí, começa a primeira situação.
O Jsf, ele não entende string. O Jsf, entende o negócio chamado Faces Message. Então, eu vou ter que criar um Faces Message. O Faces Message, ele recebe alguns paramos que eu vou estar comentando.
Tá, vamos criar o Faces Message, então. Eu vou criar aqui, eu vou pressionar F, maírosculo, e vou pressionar Ctrl, espaço. Aí, eu vou procurar o Faces, ou para a cabez de tanarrado, Faces Message. Esse daqui, eu vou procurar essa classe aqui, Faces Message.
Vou dar um clique duplo nela para ele já fazer o import para mim. Então, se você não usar o Ctrl, espaço, você vai precisar importar esse cabelo em porte na mão. Aí, na verdade, esse Faces Message, ele que é a mensagem que vai se exibida na verdade. Então, vou chamar ele aqui, por exemplo, vou chamar ele de MESG, para diferenciar.
Aí, eu vou dar um nilo nela, Faces Message. O Faces Message, pessoal. Ele precisa, basicamente, de três parâmetros. Ele precisa do primeiro parâmetro, que ele chama de CVGT, o segundo parâmetro que ele chama de Summary, e o terceiro parâmetro que ele chama de Detail.
O que é o CVGT? O CVGT é a CVGT. O que é a CVGT? A CVGT é o tipo do erro.
É que o erro pode ser o seguinte. Ele pode ser um erro Info. Os erros, as mensagens do tipo Info, na verdade, não é erro. As mensagens do tipo Info, elas são mensagens, por exemplo, informativas.
Por exemplo, uma mensagem de sucesso, é uma mensagem Info. Eu posso ter mensagens que ele chama de Arning, que são aqueles tipos de erros que não são tão erros assim. Eu tenho também mensagens que são do tipo Ihrr, e tenho mensagens que são os erros comuns, e tenho também as mensagens do tipo Fatais, que ele chama de Fatal. Que no caso são aqueles tipos de erros que impede a aplicação de continuar.
No caso, eu vou usar dois tipos somente. Eu vou usar o Info e vou usar o Ihrr. Então, aqui no CVGT, eu vou apertar F-mausculo, vou pressionar contra o espaço, vou novamente escrever Fences Messages, vou apertar o ponto, aí aparece para mim. Aparece aqui os quatro CVGT que ele tem.
No caso, eu vou escolher o CVGT Info, vou dar um clique duplo nele. Então, quer dizer que vai ser uma mensagem D, Informação, porque é uma mensagem D sucesso. O que é o Summário e o que é o Detêio? É que quando você vai dar uma mensagem, o Summário seguiu o título e o Detêio seguia a mensagem detalhada.
Geralmente isso aí é pouco usado. Eu costumo colocar o título e o Detalhamento igual. Mas se você quiser, então você pode colocar o Summário aqui, uma mensagem resumida, e no Detêio você pode colocar uma mensagem mais detalhada. No nosso caso com uma aplicação bem simples, eu vou colocar os dois iguais.
Então, o meu Summário, que vai ser o resumo da mensagem e a mensagem detalhada vão ser o mesmo. Certo, cria então o meu FaceMessage que eu chamei de MESG. Agora, o que eu tenho que fazer? Agora, eu vou ter que adicionar esse MESG no contexto da minha aplicação.
O que é o contexto da minha aplicação? O contexto da minha aplicação seguiu uma área de memória, onde fica armazenada as informações referentes à minha aplicação. Tem como eu acessar isso? Tem.
Então, eu vou acessar o contexto da minha aplicação e vou jogar esse FaceMessage no contexto da minha aplicação para que ela possa ser exibida. Então, a primeira segunda coisa que eu vou fazer, então, eu vou capturar o contexto da minha aplicação. Para capturar o contexto da minha aplicação, eu preciso usar um comando e eu preciso guardar isso em uma variável. Para eu guardar o contexto, eu vou preencher na F-maí-usculo, vou dar contra o espaço, e vou procurar uma variável do tipo chamado Faces Context, que é essa daqui, Faces Context.
Vou dar um clique duplo nela para ele realizar o import. O Faces Context, vou chamar ele de contexto, vai ser uma variável que vai apontar por contexto da minha aplicação. Como que eu capturo o contexto da minha aplicação? Eu escrevo Faces Context.getcurrenteinstance.
Então, ele vai pegar a área de memória temporária da minha aplicação e vai ser referenciada por essa variável que eu chamei de contexto. O que eu posso fazer agora com essa variável? Agora eu posso pegar o meu Faces Message, que chama MSG, e posso jogar no meu contexto. Como que eu vou fazer isso?
E vou fazer contexto.addmessage. O primeiro parâmetro, eu vou colocar nulo porque ele não tem utilidade para a gente. O segundo parâmetro, eu vou colocar o meu Faces Message. Pronto, vou salvar aqui.
Ta feito o meu método de adicionar uma mensagem de sucesso no meu contexto. O growl, para ele exibir uma mensagem, ele precisa que você tenha um Faces Message no contexto. E para exibir a mensagem de erro, o código é idêntico. A única diferença é que vei de se info, ele vai ser irro.
Então, vou agora codificar o método para adicionar a mensagem de erro. Vou fazer o método público. Ele também vai ser estático. Não vai ter retorno, vai ser voide.
Então, vou chamar ele de adicionar mensagem de erro. Ele vai receber como pagamos uma mensagem também. Da mesma forma, eu vou criar o meu Faces Message, que eu vou chamar de em SG, no meu Faces Message, vou precisar passar três parâmetros. O primeiro parâmetro é o que vai ser diferente.
Em vez de ser info, eu vou passar esse daqui. O cverit underline-yror. Então, eu quero dizer que a minha mensagem, ele vai ser irro. O legal, pessoal, é que, como eu vou usar pra mim, quando você passa a se vir de erro, ele mostra de uma cor.
Quando você passa a se vir de info, é uma cor. Então, isso vai ser legal, porque não precisa formatar a coloração das mensagens. O segundo parâmetro é a mensagem resumida, eu vou passar a mensagem mesmo. E o terceiro parâmetro é a mensagem detalhada, que eu vou passar a própria mensagem mesmo.
Vou capturar o contexto da minha aplicação, usando o mesmo método. Vou capturar o contexto também da minha aplicação. E vou adicionar o meu Faces Message no meu contexto. Então, o primeiro parâmetro é no.
E o segundo parâmetro é o meu Faces Message. Vou salvar pronto. Tá feito os meus dois metros, o método de sucesso e o método de erro. Agora, o que que eu vou fazer?
Agora, eu vou voltar na minha tela e vou começar a trabalhar com o Grow. A primeira pergunta é, onde que eu vou adicionar o Grow? E também vou precisar acertar algumas coisas no meu manejo de bim. Então, eu vou abrir aqui o meu manejo de bim, porque eu vou precisar mexer nele.
E vou abrir também o meu XHTML, porque eu vou precisar também manipular ele. Então, eu vou precisar acertar no meu manejo de bim e vou precisar acertar no meu XHTML. E vou também precisar acertar no meu template. Então, vou precisar mexer em três arquivos para que as mensagens funcionem corretamente.
Tá, vamos começar então com o primeiro ajuste. A primeira questão é, onde que eu vou colocar o Grow? A minha sugestão é que você coloca o Grow no template. Por que?
Por que você vai fazer 100 páginas? Por exemplo, se você colocar o Grow no template, quer dizer que todas as páginas que respeitarem o template, já vão ter o Grow. Então, isso é bom porque você não tem que se cantar a cabeça, colocando Grow, página por página. Então, eu costumo muito colocar dentro do template, que, no nosso caso, ele chama modelosystema.xHTML.
Então, a primeira coisa que eu vou fazer, eu vou adicionar aqui no Grow no meu template. O Grow, pessoal, ele não precisa de fórmula, porque ele não submete nada. Ele não precisa estar dentro de nada. Então, eu vou adicionar ele aqui, logo após o bag, antes do P, layout.
Então, eu vou colocar aqui P2. P2. Grow. Aí, vou suprimir o fecha.
Algumas propriedades que eu preciso colocar no Grow, que a gente já vai colocar, porque eu vou precisar dessas propriedades num futuro. O Grow é necessário que ele tenha ID. Por que? O Grow, para ele ser exibido, eu tenho que atualizar ele via Jax.
Então, eu vou precisar que ele tenha ID. Se você lembra a grava de aula passada, quando eu vou precisar atualizar algumas coisas via Jax, eu atualizava via ID do componente. Então, o meu Grow, ele vai precisar de um ID. Então, eu vou chamar, por exemplo, ele de MSG Global.
No sentido de mensagem global, ou seja, vai servir para todas as telas. Então, você não pode esquecer esse ID, porque a gente vai precisar depois chamar ele em telas futuras. Outra propriedade que é importante no Grow, até você pode pressionar aqui contra o espaço para ver ele, tem várias. Uma propriedade que é muito usada, eles usam essa aqui chamado Life.
A Life serve o seguinte, quando Grow aparece uma mensagem de erro, no Life você coloca quantos segundos você quer. Que a mensagem apagueça. No caso, o Life é destipulado em mil e segundos. Ou seja, então, se você quer que fique um segundo, você vai colocar mil, dois segundos, dois mil, três segundos, três mil.
E assim, sucessivamente. Por exemplo, eu quero que o meu Life seja três segundos. Então, eu vou colocar três mil, com a três mil mil segundos. Tem uma outra propriedade que é muito usada, mas que eu não vou testar, se vocês quiserem depois testar a curiosidade, é essa Stick.
O Stick, ele fica, quando ele deu erro, ele não fecha. O curiosidade não é erro, né? A mensagem. Quando ele deu a mensagem, ele não fecha.
Ele espera que você vala e clique num X para fechar. Então, tem pessoas que gostam de usar o Stick no lugar do Life. Ele fica a seu critério. Eu gosto mais da opção Life.
Então, adicionei aqui o meu Grau, adicionei o ID e adicionei o Life. Vou salvar ele agora. Então, beleza. Fiz o primeiro ajuste, que é onde colocar o Grau.
Agora, vou fazer o segundo ajuste. O segundo ajuste, vou fazer ele no manejo de Bim. O que que eu vou estar fazendo no manejo de Bim? Eu vou disparar mensagens que vão ser exibidas no Grau.
Então, vou abrir o meu manejo de Bim lá. Vou adicionar onde, geralmente, em métodos que tem, por exemplo, Tri-Cat. Não vou preparar IP Esquisa, por exemplo. Eu tenho um Tri-Cat aqui.
Deixa eu maximizar para ficar melhor a visualização. Não vou preparar IP Esquisa. No Tri, geralmente, eu não coloco mensagem de sucesso, porque não é comum você colocar uma mensagem assim. IP Esquisa realizada com sucesso.
Não é comum. Então, eu não vou colocar. Mas no Quete, é comum você colocar sempre uma mensagem. Então, depois de estar aqui, eu vou adicionar uma mensagem de erro.
Como que vou fazer isso? Eu vou personar J, mais úsculo. Vou apertar contra o espaço. Aí, eu vou escrever J, S, F, o tio.
Até ele achar. Vou dar um clique duplo. Por que eu usei o contra o espaço? Deixa eu ouvir aqui em cima.
Eu usei o contra o espaço para que ele fizesse o import. Aqui que está na linha 13. Se você não usar o contra o espaço, você tem que fazer o import na mão. Então, eu vou colocar J, S, F, o tio.
Adicionar mensagem de erro. Aí, eu vou colocar aqui uma mensagem de erro. Detalhe, pessoal. Aí, vem de acordo com o que você poefege.
Se você quiser, você pode escrever uma string. Se você quiser, você pode pegar a própria mensagem do banco e mostrar. Eu gosto de pegar a mensagem que vem do banco e mostrar, porque até fica mais fácil, quando o meu cliente, por exemplo, me ligar, ele falou, olha, parece eu tal mensagem aqui. Aí, eu já sei, por exemplo, que erro pode estar acontecendo.
Então, eu vou mostrar para exibir a mensagem do banco. Então, para eu pegar a mensagem do banco, eu faço assim. Eu vou usar essa exceção aqui. Eu coloco ex.getmessage.
Então, ele vai exibir para mim a mensagem que vem do banco. Se você quiser, você pode escrever uma mensagem também. Só você colocar as pás dupla aqui. E escreveu uma mensagem qualquer que você quiser.
No meu caso, eu vou deixar a mensagem que vem do próprio banco de dados até para facilitar a vida quando o cliente me ligar. Não para parar novo, ele não dá erro, então não precisa tratar contra a Iquete. Então, eu não vou colocar nenhuma mensagem. Aqui no novo, é bom colocar mensagem.
Uma mensagem de sucesso e uma mensagem de erro. Então, quando salvar, ele é legal aparecer uma mensagem do tipo assim. Olha, que fabricante salvo com sucesso. É legal aparecer essa mensagem.
Então, eu vou adicionar aqui, antes do KET, um Jsf util. Ponto adicionar mensagem de sucesso. Aí, eu vou escrever fabricante salvo com sucesso. Vou escrever essa mensagem aqui.
E também vou adicionar uma mensagem de erro. No KET, então, Jsf util. Ponto adicionar mensagem de erro. Novamente, vou capturar o erro do banco.
Se você quiser, novamente, frisando, você pode escrever uma mensagem de erro que você quiser. Mas se bem, pessoal, que se você for verificar os RPs mais famosos que nós temos aí no mercado, a maioria dos RPs famosos não é um tratamento efetivo de mensagem de sucesso e de erro. Geralmente, a mensagem de sucesso ele mostra uma mensagem realmente, mas a mensagem de erro, geralmente, ele retorna a mensagem do banco. Então, não é uma prática errada.
Vamos dizer assim. Então, vou pressionar aqui o salvar agora. Então, fiz o segundo ajuste, que é colocar as mensagens na minha aplicação. Então, coloquei nos pontos que eu achei necessário.
Se eu rodar, ele ainda não vai disparar as mensagens. Por que? Com o forma disso para vocês, falta o terceiro ajuste que é atualizar via a Jax. Então, vou ter que atualizar agora usando ID.
Eu vou rodar aqui para vocês ver em que ele não vai mostrar. Então, vou minimizar aqui. Eu vou rodar o fabricante XHTML. Então, vou clicar com um botão de gaito aqui.
Opção RUNES, opção RUNON SERVER, botão FILEISH. Eu vou rodar aqui, só para vocês ver em que ele não vai mostrar a mensagem de sucesso ainda por causa do AJAX. Então, por exemplo, vou salvar aqui. Deixa eu maximizar.
Eu vou salvar aqui, por exemplo, um fabricante novo. Então, vou pressionar novo aqui. Eu vou chamar a excelade ABC FabI1. Envientem esse fabricante aqui agora.
Gravar. Ou seja, não exibiu a mensagem. A mensagem não foi exibida porque eu não atualizei via a Jax. Então, o que eu tenho que fazer?
Quando eu pressionar o botão? Quando eu sei, eu tenho que lembrar de acordo com o meu código, em que momento que eu tenho que atualizar? Então, eu vou fazer o primeiro ajuste. O primeiro ajuste que eu vou fazer é relacionado ao botão novo aqui.
O que isso quer dizer? Quer dizer que quando eu pressionar o botão novo, se acontecer algum erro, ele vai atualizar para mim e vai mostrar. Vamos ver isso. Então, eu vou aqui no meu fabricante X, HTML.
O que eu vou fazer no botão gravar? No meu botão gravar, eu já tinha um update. Se vocês lembrarem, esse update usamos ele para que eu pudesse atualizar a tabela. Eu posso colocar quantos componentes eu quiser no meu update.
Então, como que eu coloco outro componente? Basta você dar um espaço, então você deu um espaço, ele já sabe que é outro componente. Aí, eu vou colocar o ID do meu grow. Como ele não está dentro de um formulário?
É só colocar o nome dele com um dois pontos. Vou colocar dois pontos, M-S-G global, que foi o nome que nós demos para ele. É só você no botão gravar colocar esse dois pontos, M-S-G global. Esse espaço que eu coloquei é o separador para dizer que eles são dois componentes distintos.
Agora, se eu voltar aqui no meu navegador e fazer um refete, vou pressionar o botão novo. Vou salvar outro fabricante aqui, fabricante 2. Pressionar o botão gravar. Está aqui, esse daqui é o grow.
Ele fechou automaticamente, porque? Porque o lifetime de ele está três segundos. Se você achar que está muito rápido, é só aumentar. Eu vou forçar um erro agora, só para vocês veem a mensagem de erro.
Não precisa fazer esse erro no de vocês, é só para mostrar. Então, eu vou parar aqui o meu tom quiet, para eu forçar um erro aqui. Eu vou lá no meu down, vou forçar um erro aqui, novamente, frizando. Vocês não precisam fazer no de vocês.
Eu vou forçar um erro de propósito aqui. Eu vou escrever errado aqui, o meu comando de incerte. Eu vou escrever errado aqui, só para forçar um erro, para ver que ele vai funcionar. Então, eu vou rodar aqui o meu xz.tml, opção RUNES, RUN1Server, botão Filiş.
Então, eu vou mostrar para vocês agora que, quando o quiet cai, ele vai mostrar uma mensagem de erro. Então, novo ABC, FAB3, vou pressionar o botão Gavar. Aí, apareceu aqui, ó, o erro que apareceu. Então, se você achar que está muito rápido, é só aumentar o lifetime, lá, para quando segundos você quiser.
Mas, ou seja, deu certo, ele mostrou para mim a mensagem de erro. Então, deixa eu só acertar novamente o meu down, vou estar como ele estava antes, só para não ficar com erro. Então, está feita a parte de mensagem agora da nossa aplicação. Então, agora, você pode usar a mensagem no Editag, de escluir, que eu vou fazer nas próximas videoalas.
Bem, pessoal, é isso que eu queria mostrar nessa videoala. Favor curtir o canal aí, não esqueci de compartilhar o vídeo. A gente se vê na próxima videoala. Abraços, até mais!
