2013-04-19 2 views
0

Я новичок в Java. Я хочу, чтобы проверить мою сессию, что без exixting сессии никто не сможет войти. Я делаю это через перехватчик, и я сделал класс перехватчика, в котором, если объект сеанса имеет значение null, и если объект сеанса не равен нулю, тогда он будет вызывать действие, но actionInvocation.invoke() не работает, и он дает исключение из нулевого указателя.actionInvocation.invoke() не вызывает действие вместо этого дает исключение нулевого указателя

public class AuthenticationInterceptor implements Interceptor{ 
    private static final long serialVersionUID = 1L; 

    public AuthenticationInterceptor() { 
    } 

    @Override 
    public void destroy() { 
    } 

    @Override 
    public void init() { 
    } 

    @Override 
    public String intercept(ActionInvocation actionInvocation) throws Exception { 
     String vString=null; 
     try{ 
      HttpServletRequest request = (HttpServletRequest) actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_REQUEST); 
      HttpSession session = request.getSession(); 
      System.out.println(session.getAttribute(Constant.CURRENT_USER)); 
      UserDTO userDTO=(UserDTO) session.getAttribute(Constant.CURRENT_USER); 

     if(userDTO == null){ 
      System.out.println("userdto=null"+userDTO); 
      vString = "login"; 
     } 
     else if(!(userDTO).equals(null)){ 
       System.out.println("userdto!!!=null"+userDTO.getUserId()); 

       System.out.println("test... "+actionInvocation.invoke()); 
       vString= actionInvocation.invoke(); 
      } 
     }catch (Exception e) { 
      e.printStackTrace(); 
     }return vString; 

     } 

    private void addActionError(Object action, String message) { 
     if (action instanceof ValidationAware) { 
      ((ValidationAware) action).addActionError(message); 
     } 
    } 

} 

ниже файл XML ..

<interceptors> 
      <interceptor name="authenticate" class="wm.com.erp.utility.AuthenticationInterceptor"/> 

<interceptor-stack name="authenticateStack"> 
       <interceptor-ref name="authenticate"/> 
      </interceptor-stack> 
     </interceptors> 

     <global-results> 
      <result name="login" type="redirect">/index.jsp</result> 
     </global-results> 
<action name="Assignment" class="wm.com.erp.action.AssignmentAction" method="AssignmentList"> 
      <interceptor-ref name="authenticateStack"/> 

      <result name="success">/Assignment.jsp</result> 
      <result name="input">/home.jsp</result> 
     </action> 

Ваша помощь будет очень ценна.

+0

Здравствуйте и добро пожаловать в StackOverflow. Всякий раз, когда вы публикуете сообщение об ошибке, которую вы получаете, вы также должны опубликовать его стек. Кроме того, вы должны попытаться отформатировать свой код таким образом, чтобы нам было легко его читать (т. Е. Удалять любые прокомментированные коды, пробелы, нерелевантный импорт и т. Д.). В противном случае нам очень сложно помочь вам. –

+1

Добавьте «defaultStack» в свой стек перехватчиков. –

+0

yes thecourse ..i запомнит это в следующий раз .. –

ответ

0
Map<String,Object> session = invocation.getInvocationContext().getSession(); 

if(session.isEmpty()) 
     return Action.ERROR; // session is empty/expired error must be redirect on 

return invocation.invoke(); 

Тир этот код после этого, если у вас есть проблемы, пожалуйста, публиковать трассировки стека вашего исключения

+1

Спасибо Aleksandr a lot..it работает после добавления defaultStack..thanks много .. –

+0

@ kapilDhunna Если это ответ, который решил вашу проблему, вы должны отметить его как принятый, щелкнув знак «Принять» под подсчетом голосов ответа. –

+0

@Banang: Это не так. :) –

Смежные вопросы