2011-06-17 6 views
5

Mi problema es que las variables de la acción no se completan después de que se activan desde el interceptor utilizando invocation.invoke. Lo que sé es que antes de utilizar un interceptor, funcionó correctamente (De una .jsp presenté una forma y una acción se llama y cada variable fue poblada)Struts 2 variables de acción no pobladas después de la invocación del interceptor.invoke()

clase Interceptor:

public String intercept(ActionInvocation invocation) throws Exception { 

    final ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); 
    HttpSession session = request.getSession(true); 
    Object user = session.getAttribute(Constants.USER_HANDLE); 

    if (user == null) { 
     String signUp = request.getParameter(Constants.SIGN_UP); 

     if (!StringUtils.isBlank(loginAttempt)) { 
      if (processLoginAttempt(request, session)) { 
       return "login-success"; 
      } 
     } else if (!StringUtils.isBlank(signUp)) { 
      return invocation.invoke(); 
     } 
     return "login"; 
    } else { 
     return invocation.invoke(); 
    } 
} 

puntales archivo XML :

<package name="defaultPackage" extends="struts-default"> 

    <interceptors> 
     <interceptor name="login" class="com.spiddan.LoginInterceptor" /> 
     <interceptor-stack name="defaultStack"> 
      <interceptor-ref name="login"/> 
     </interceptor-stack> 
    </interceptors> 

    <default-interceptor-ref name="defaultStack"/> 
    <default-action-ref name="index"/> 

    <global-results> 
     <result name="login" type="redirect">/logIn.jsp</result> 
     <result name="login-success" type="redirect">index</result> 
    </global-results> 

    <action name="addUserAction" class="com.spiddan.action.UserAction" method="addUser"> 
     <result name="input">/logIn.jsp</result> 
     <result name="success">/index.jsp</result> 
     <result name="error">/error.jsp</result> 
    </action> 

clase Action:

public class UserAction extends ActionSupport implements ModelDriven { 

private User user; 
private int tempGender; 
private String confirmPassword; 
private UserDAO userDAO; 
private PasswordEncrypter passwordEncrypter; 

public Object getModel() { 
    return getUser(); 
} 

public String addUser() throws Exception { 

} 

//Getter and setters ect 

¡Gracias por su tiempo!

Respuesta

8

Has especificado solo tu interceptor personalizado en tu código y has excluido todos los otros interceptores predeterminados de Struts2. Pruebe esto en su lugar:

<interceptors> 
    <interceptor name="login" class="com.spiddan.LoginInterceptor" /> 
    <interceptor-stack name="defaultStackModified"> <!-- name doesn't override existing defaultStack--> 
     <interceptor-ref name="defaultStack"/>  <!-- include the defaultStack this way--> 
     <interceptor-ref name="login"/> 
    </interceptor-stack> 
</interceptors> 
Cuestiones relacionadas