2011-06-17 6 views
5

मेरी समस्या यह है कि invocation.invoke का उपयोग करके इंटरसेप्टर से ट्रिगर होने के बाद क्रिया के चर को पॉप्युलेट नहीं किया जा रहा है।इंटरप्टर्स के invocation.invoke()

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(); 
    } 
} 

Struts एक्सएमएल फ़ाइल: क्या मुझे पता है कि एक इंटरसेप्टर उपयोग करने से पहले, यह (एक .jsp मैं फ़ॉर्म सबमिट किया था से और एक कार्य कहा जाता है और हर चर बसा हुआ था) ठीक से काम किया

इंटरसेप्टर वर्ग है :

<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> 

कार्रवाई वर्ग:

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 

आपके समय के लिए धन्यवाद!

उत्तर

8

आपने अपने कोड में केवल अपना कस्टम इंटरसेप्टर निर्दिष्ट किया है और अन्य सभी Struts2 डिफ़ॉल्ट इंटरसेप्टर को बाहर कर दिया है। इसके बजाय इसे आजमाएं:

<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> 
संबंधित मुद्दे