Interceptors Struts 2

1 resposta
C

Pessoal estou implementando o "login" no meu projeto com interceptors.
Se qualquer módulo for acessado sem estar logado, ele é redirecionado para o login.
Isso tah funcionando.

Agora se o usuario logar corretamente, ao clicar no botao logar eu redireciono pra pagina principal.
Mas isso não está dando certo, alguém sabe porque?

Meu Struts.xml
<package name="pages" extends="struts-default">            
      
      <interceptors>
         
         <interceptor name="logon" class="actions.LoginInter"/>
         
         <interceptor-stack name="stackGeral">
            <interceptor-ref name="logon"/>
         </interceptor-stack>
         
      </interceptors>      

      <default-interceptor-ref name="logon"/>
            
      <global-results>
         <result name="logon" type="redirect">/pages/login.jsp</result>
      </global-results>
      
      <action name="loga!*" method="{1}" class="actions.LoginAct">
         <result name="logar">/index.jsp</result>         
      </action>        
           
      <action name="Fornecedor!*" method="{1}" class="actions.FornecedorAct">
         <result name="gravar">/index.jsp?area=fornecedor</result>
         <result name="editar">/index.jsp?area=fornecedor</result>
         <result name="input">/index.jsp?area=fornecedor</result>
         <result name="pesquisa">/index.jsp?area=pesquisarfornecedor</result>
         <result name="excluir">/index.jsp?area=pesquisarfornecedor</result>
      </action>
   </package>

Minha classe que implementos o Interceptor

public class LoginInter implements Interceptor 
{

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void init() {
		// TODO Auto-generated method stub
		
	}

	public String intercept(ActionInvocation arg0) throws Exception {
		if (ServletActionContext.getRequest().getSession().getAttribute("usuario") instanceof Usuario)
			return arg0.invoke();
		return "logon";
	}

Meu Jsp

<s:form name="frmlogin" method="post" theme="simple">
      
       <s:div><s:label cssClass="captionLogin" value="  ::Login::"/></s:div>
       <s:div cssClass="login">   
          <s:div><s:label id="labelusuario" value="Usuario"/><s:textfield cssClass="campo" name="Usuario.usuario" size="20" maxLength="15"/></s:div>
          <s:div><s:label id="labelusuario" value="Senha"/><s:password cssClass="campo" name="Usuario.senha" size="20" maxLength="15"/></s:div>
          <s:div id="direita" theme="simple"> <s:submit align="right" cssClass="botao" value="Logar" theme="simple" action="loga!logar"/>&nbsp;&nbsp; </s:div>
       </s:div>
      
   </s:form>

1 Resposta

V

Faz tempo que isso foi postado … mas para ajudar aos nobres companheiros programadores Java

A solução para esse problema é colocar na pilha de interceptor’s o defaultStack

ex.: acredito (pois não tenho a app aqui ) que para solucionar esse problema teria que ser feito o seguinte

<interceptor-stack name="stackGeral">
            <interceptor-ref name="logon"/>
            <interceptor-ref name="defaultStack"/> <!-- adicionar essa linha -->
         </interceptor-stack>
Criado 23 de janeiro de 2007
Ultima resposta 17 de jun. de 2010
Respostas 1
Participantes 2