Pessoal Boa tarde,
Na minha aplicação trato todos os erros(preenchimento obrigatorio de campo etc) dentro dos Form-Beans.
Neste, tenho meu login, no qual tem um usuário e senha e utilizo uma ãção que verifica o login e a senha juntamente ao UserDAO e verifica se existe o cara ou não.
O problemas é o seguinte, até ai ta tudo funcionando, se eu não preencher os campos ele tras as mensagens etc.
Agora estou colocando um filtro para verificar se existe a Session ou não do cara, para saber se ele está logado ou não, mas quando ele não está logado, não devolve para min os erros, na minha página não vem os erros conforme vinham antes.
O código inteiro funciona, só os erros que não vem como eu gostaria.
Seugue os códigos abaixo:
index.jsp
<%@page contentType="text/html; charset=iso-8859-1" language="java" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:html>
<title><bean:message key="site.title"/></title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<body>
<div id="centro">
<div id="login">
<p class="FontV3Bold">Acesso ao Sistema</p>
<html:form action="/login" focus="user.login" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="FontV4"><div align="right"><span class="FontV1">Login</span> </div></td>
<td><html:text styleClass="Campo2" property="user.login" /></td>
</tr>
<tr>
<td class="FontV4"><div align="right"><span class="FontV1">Senha</span> </div></td>
<td><html:text styleClass="Campo2" property="user.psw" /></td>
</tr>
<tr>
<td colspan="2" class="FontV4"><div align="center"><span class="FontV2">
</span></div></td>
</tr>
<tr>
<td colspan="2" class="FontV4"><div align="center">
<html:submit styleClass="Campo2">Enviar Dados</html:submit><br/>
<html:errors property="login"/>
<html:errors property="psw"/>
</div></td>
</tr>
</table>
</form>
</html:form>
</div>
</div>
</body>
</html:html>
login.java
package br.com.peoplemais.struts.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import br.com.peoplemais.bean.User;
import br.com.peoplemais.dao.factory.DAOFactory;
import br.com.peoplemais.struts.form.LoginForm;
public class Login extends Action {
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("Algum usuário está tentando se logar");
LoginForm loginForm = (LoginForm) form;
User user = loginForm.getUser();
User populaUser = null;
DAOFactory daoFactory = DAOFactory.getFactory(DAOFactory.MYSQL);
populaUser = daoFactory.getUserDAO().getUser(user.getLogin(), user.getPsw());
if(populaUser != null){
System.out.println("Usuário Aceito");
return map.findForward("ok");
}
else {
System.out.println("Usuário Iválido");
return map.findForward("index.jsp");
}
}
}
LoginForm.java (form-bean)
package br.com.peoplemais.struts.form;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import br.com.peoplemais.bean.User;
public class LoginForm extends ActionForm {
private User user = new User();
public User getUser(){
return this.user;
}
@Override
public ActionErrors validate(ActionMapping map, HttpServletRequest req) {
ActionErrors erros = new ActionErrors();
if(stringVazia(user.getLogin())){
erros.add("login", new ActionMessage("error.textLogin"));
}
if(stringVazia(user.getPsw())){
erros.add("psw", new ActionMessage("error.textPsw"));
}
return erros;
}
public boolean stringVazia(String s){
return s == null || s.trim().length() == 0;
}
}
FilterSessionRequest.java(filtro)
package br.com.peoplemais.servlet.filters;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import br.com.peoplemais.bean.User;
public class FilterSessionRequest implements Filter {
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
User user = new User();
HttpServletRequest rq = (HttpServletRequest) request;
HttpSession session = rq.getSession();
HttpServletResponse rp = (HttpServletResponse) response;
if(session.getAttribute("user") == null){
System.out.println("sem login");
request.getRequestDispatcher("/index.jsp").include(request, response);
}
else{
System.out.println("Com login");
chain.doFilter(request, response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
Se alguém tiver alguma solução para isso e também quiser comentar algo de errado que estou fazendo em meu código serei grato.
[]s
Eduardo Lima
eduardo@peoplemais.com.br