2015-07-08 1 views
0

Вот код перехватчика: -Войти Interceptor (Пользовательские Interceptor) очистка параметров Действие

public class LoginInterceptor extends AbstractInterceptor implements 
    StrutsStatics { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

@Override 
public String intercept(ActionInvocation invocation) throws Exception { 
    ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context 
      .get(HTTP_REQUEST); 
    HttpSession session = request.getSession(false); 

    String loginId = (String) session 
      .getAttribute(Constants.SESSION_ATT_USERID); 

    if (loginId == null) { 
     return Action.LOGIN; 
    } else { 
     return invocation.invoke(); 
    } 

} 
} 

При вызове любого конкретного действия Перехватчик является вызывался. Но параметры действия становятся нулевыми. Если вы используете код без перехватчика, то его работа прекращается. Я попытался решить это по многим причинам, но не смог найти решение.

ответ

0

Если вы хотите использовать перехватчик, вам нужно добавить его в defaultStack, или к customStack из ваших, в то время как вы, скорее всего, используется только то, что перехватчик для вашего действия. Это означает, что любой другой Interceptor не работает для этого действия, даже не для перехватчика параметров, который отвечает за настройку параметров в действии.

Неправильно:

<action name="foo" class="org.foo.bar.foobarAction"> 

    <interceptor-ref name="myLoginInterceptor"/> 

    <result>success.jsp</result> 
</action> 

Справа:

<action name="foo" class="org.foo.bar.foobarAction"> 

    <interceptor-ref name="myLoginInterceptor"/> 
    <interceptor-ref name="defaultStack"/> 

    <result>success.jsp</result> 
</action> 
+0

Да я уже сделал, что приятель. –

+0

Lol «приятель» :) это был выстрел в темноте, теперь вам нужно опубликовать более подробную информацию или ваш вопрос неопровержимо –