Pessoal, estou estudando MVC e surgiu uma dúvida. Tenho a pagina JSP que envia as informações para o Servlet para fazer os requests, as validações e chamar os metodos de gravação no banco de dados… Se ocorrer um erro ou uma inconsistencia que impeça de prosseguir tenho que voltar para o JSP e informar ao usuário qual o problema.
Qual a melhor maneira de se fazer isso ? (Não estou utilizando nenhum framework web)
[]'s
Luis Cesar
[quote=luiscesarinfo]Pessoal, estou estudando MVC e surgiu uma dúvida. Tenho a pagina JSP que envia as informações para o Servlet para fazer os requests, as validações e chamar os metodos de gravação no banco de dados… Se ocorrer um erro ou uma inconsistencia que impeça de prosseguir tenho que voltar para o JSP e informar ao usuário qual o problema.
Qual a melhor maneira de se fazer isso ? (Não estou utilizando nenhum framework web)
[]'s
Luis Cesar[/quote]
Amigo, creio que se você voltar para a mesma JSP não terás MVC, pois acredito que vai precisar usar o PrintWriter para escrever HTML. Dessa forma, morreu o MVC.
Creio que a melhor abordagem seria você fazer um RequestDispatcher para uma página de erro. Eu utilizo páginas de erro bem específicas para cada Exception (Não sei se é uma boa idéia, mas informa bem =) ). Erros de validação, login, etc. eu aconselharia o uso do DWR. Acho que fica bem elegante.
Bem, acho que é isso.
Abraços
Obrigado ao celso.martins pela resposta.
Mais alguem tem uma suguestão ou dica ?
Bom acho que você quer uma reposta objetiva…bom então ai vai.
Eu utilizo uma classe java onde eu instancio ela a cada vez que quero mostrar uma mensagem…segue exemplo
[color=darkred]------------------------------------------
Classe VOMensagem
import java.io.Serializable;
import model.vo.*;
public class VOMensagem implements Serializable {
private static final long serialVersionUID = 1L;
private String mensagem;
private String img_mensagem;
public void setMensagem(String mensagem) { this.mensagem = mensagem; }
public void setImg_mensagem(String img_mensagem) {this.img_mensagem = img_mensagem; }
public String getMensagem() { return mensagem; }
public String getImg_mensagem() { return img_mensagem; }
}
[/color]
Ai no método de validação e persistência eu faço o seguinte:
[color=red]public String save() {
VOMensagem vOMensagem = (VOMensagem) FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(
FacesContext.getCurrentInstance().getELContext(), vOMensagem, Object.class).getValue(
FacesContext.getCurrentInstance().getELContext());
DaoExemplo exemploDao = new DaoExemplo();
try{
exemploDao.save(exemplo);
//persista os dados aqui.
//Ex. Hibernate
HibernateUtility.commit();
vOMensagem.setImg_mensagem("imagens/salvo.gif");
vOMensagem.setMensagem("Registro salvo com sucesso!");
} catch (Exception ex) {
ex.printStackTrace();
vOMensagem.setImg_mensagem("imagens/erro.gif");
vOMensagem.setMensagem("Erro na validação!");
}
return null;
}[/color]
Ai vc tem que fazer o seguinte no JSP.
[color=red]…
…
<t:panelGrid align=“center”>
<h:commandButton action="#{actMetodo.save}" image="/pages/imagens/salvar.jpg" />
<t:panelGrid align=“center” styleClass=“txtCentro” columns=“2” rendered="#{! empty vOMensagem.mensagem}">
<h:graphicImage value="#{vOMensagem.img_mensagem}" />
<h:outputText value="#{vOMensagem.mensagem}" style=“vertical-align: middle;” styleClass=“txtVermelho3”/>
</t:panelGrid>
</t:panelGrid>
…
…
[/color]
actMetodo = classe java de persistência e validação.
Não esqueca de colocar a classe actMetodo no facesconfig.xml.
Espero que possa ter te ajudado.
Boa programação.
[quote=jimjr_ivan]Bom acho que você quer uma reposta objetiva…bom então ai vai.
actMetodo = classe java de persistência e validação.
Não esqueca de colocar a classe actMetodo no facesconfig.xml.
Espero que possa ter te ajudado.
Boa programação.[/quote]
Amigo, só um pitaco, me permita. ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=6)
Me parece que o seu exemplo é com JSF e o amigo não está usando Framework MVC, assim como eu, ainda. =)
Ainda estou estudando o Struts e o JSF e ainda não me sinto seguro para usar. Por isso ainda utilizo esta abordagem.
P.S. Creio que a minha resposta tenha sido direta. Só não dei o peixe, ensinei o caminho do local da pesca e qual vara usar. =) Acho que assim vai ajuda-lo a fixar os conceitos.
P.S. 2 -> Luis, se ainda está com dificuldades dá uma olhada nos tutoriais do GUJ sobre servlets e também na API do Java. Te garanto uma coisa, vai ser melhor assim do que eu postar o código para você. ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=6)
Abraços e boa sorte
[quote=luiscesarinfo]Pessoal, estou estudando MVC e surgiu uma dúvida. Tenho a pagina JSP que envia as informações para o Servlet para fazer os requests, as validações e chamar os metodos de gravação no banco de dados… Se ocorrer um erro ou uma inconsistencia que impeça de prosseguir tenho que voltar para o JSP e informar ao usuário qual o problema.
Qual a melhor maneira de se fazer isso ? (Não estou utilizando nenhum framework web)
[]'s
Luis Cesar[/quote]
Kara tenho 1 coisa super simpres q eu uso em JSTL:
No servlet quando der algum erro la no catch vc coloca assim:
try{
...
} catch(Exception ex) {
response.sendRedirect("pagina.jsp?val=true&msg="+ex);
}
vc coloca a pagina q vc quer, “val” será a variavel q comanda aparecer ou não mensagem de erro na pagina anterior, e “msg” é a mensagem de erro q vc quer retornar.
ai na sua jsp vc coloca assim dentro do body:
<label style="color:#FF0000">
<strong>
<c:if test="${param.val}">
<div align="center">${param.msg}</div>
</c:if>
</strong>
</label>
esse código ta dizendo q vc vai colocar 1 label oculto em algum lugar da sua pagina… (ai vc define…xD)
e quando ele retornar passando o parametro pela URL e o val for igual a true ele mostra a mensagem ^^
não sei se vc queria a resposta dessa forma, + se entendi bem o seu problema, isso resolve perfeitamente, e vc n prescisa importar nada.
qualquer coisa estamos ai ^^
1 - jimjr_ivan = Muito obrigado pelo post, mas ainda não estou usando nenhum framework MVC, possivelmente vou ingressar no JSF, mas ainda estou colhendo material para estudo.
2 - celso.martins = Entendi sua intenção e utilizei o seu post inicial para minha pesquisa e foi muito util. Apenas queria saber se mais alguem tinha outra sugestão como foi o caso do roberiomatos.
3 - roberiomatos = gostei da sua solução. Vou ver o qual será melhor no meu caso. Qquer coisa mando uma mensagem para vc pedindo outra dica.
no mais muito obrigado a todos. e se mais alguem tiver outra sugestão, posta ai. ![:stuck_out_tongue: :stuck_out_tongue:](https://www.guj.com.br/images/emoji/twitter/stuck_out_tongue.png?v=6)
[]’ Luis Cesar
roberiomatos: Olha só, seu exemplo funcionou perfeitamente, mas com um probleminha : o formulário está voltando vazio. Estou começando com JSTL agora e gostaria de saber o que eu posso fazer para que o formulário volte com os dados que foram enviados.
[]'s Luis Cesar
é so vc passar por parametro na URL as informações pro seu servlet, e quando vc for retorar o erro vc manda os valores juntos, tipo assim:
String teste = request.getParameter("VAR");
try {
...
} catch (Exception ex) {
response.sendRedirect("pagina.jsp?val=true&msg=Sua Mensagem&VAR="+teste);
}
desta forma vc vai esta passando pra sua pagina JSP o valor q o servlet recebeu, concatenando as variaveis da URL com o “&”;
^^
qualquer duvida so mandar msg
ah… blz…
imaginei que teria uma forma melhor de fazer isso usando useBean.
mas muito obrigado pela atenção…
[]'s Luis Cesar