Estou tentando usar DispatchAction no Struts 1.3.8, mas não funfa. O método não é achado dentro da classe LoginAction, oq posso fazer?
action do struts-config:
<action path="/login"
type="br.com.sce.controller.action.login.LoginAction"
parameter="login"
name="loginForm"
input="/jsp/login.jsp"
scope="request"
validate="true">
<forward name="fwd-sucesso" path="/jsp/index.jsp"/>
</action>
Classe LoginAction:
package br.com.sce.controller.action.login;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import br.com.sce.business.dao.usuario.UsuarioDAO;
import br.com.sce.business.vo.login.LoginVO;
import br.com.sce.business.vo.usuario.UsuarioVO;
import br.com.sce.resources.ConstantsUtil;
public class LoginAction extends DispatchAction{
public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("*** LoginAction ***");
UsuarioDAO daoUsuario = new UsuarioDAO();
LoginVO loginVO = (LoginVO)form;
boolean valida = false; // Retorno do BD validando o acesso
ActionMessages errors = new ActionMessages();
System.out.println("getLogin: " + loginVO.getLogin());
System.out.println("getSenha: " + loginVO.getSenha());
if (loginVO.getLogin() == null || loginVO.getLogin().trim().equals("")) { // trim tira os espaços em branco
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.login"));
}
if(loginVO.getSenha() == null || loginVO.getSenha().equals("")) {
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.senha"));
}
if(errors.size() != 0) {
saveErrors(request, errors);
System.out.println("Erro no Preenchimento do Login ou Password!");
return new ActionForward(mapping.getInput());
} else {
System.out.println("Login ou Password Preenchidas corretamente!");
System.out.println("Vai no banco validar Login e Password!");
valida = daoUsuario.verificaUsuario(loginVO.getLogin(),loginVO.getSenha());
UsuarioVO verificaNivelUser = daoUsuario.verificaNivelUsuario(loginVO.getLogin());
System.out.println("loginBean.getNivel(): " + verificaNivelUser.getId());
// Retorno da validação do Login Senha no BD
if(valida && verificaNivelUser.getId().equals("1")) { // Se validado OK
System.out.println("NIVEL 1!");
HttpSession session = request.getSession();
session.setAttribute("loginBean", loginVO);
return mapping.findForward(ConstantsUtil.FWD_SUCESSO);
}
if (valida && verificaNivelUser.getId().equals("2")){
System.out.println("NIVEL 2!");
return mapping.findForward(ConstantsUtil.FWD_SUCESSO);
}
else {
System.out.println("Login ou Password invalido no BD!");
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.validador"));
saveErrors(request, errors);
return new ActionForward(mapping.getInput());
}
}
}
}
Error:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Action[/login] does not contain specified method (check logs)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NoSuchMethodException: Action[/login] does not contain specified method (check logs)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:261)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.