Struts2: вход перехватчиков NullPointerException

Я закончил свое webApp, и я хочу интегрировать аутентификацию с перехватчиком там я получил исключение нулевого указателя при попытке сохранить объект... что на самом деле происходит, когда я реализовал перехватчик при вставке или получении любого объекта в БД, я получил ошибку, если я удаляю этот перехватчик, он работает нормально. Но мне нужно интегрировать аутентификацию. Итак, как я могу обойти? я получаю сессию ноль

Благодарю.

ошибка:

java.lang.NullPointerException
    com.inwi.dao.TypeSitesDAOImpl.saveOrUpdateTypeSites(TypeSitesDAOImpl.java:27)
    com.inwi.action.TypeSitesAction.saveOrUpdate(TypeSitesAction.java:150)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:870)
    ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293)
    ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
    com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:117)
    com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:108)
    ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369)
    ognl.ASTMethod.getValueBody(ASTMethod.java:90)

ниже мой класс действий

public class TypeSitesAction extends ActionSupport implements ModelDriven<TypeSites> {

    private static final long serialVersionUID = -6659925652584240539L;

    private TypeSites               type     = new TypeSites();
    private List<TypeSites>         typeList = new ArrayList<TypeSites>();
    private TypeSitesDAO            typeDAO  = new TypeSitesDAOImpl();

    public TypeSites getModel() {
        return type;
    }
    public String saveOrUpdate()
    {   
        typeDAO.saveOrUpdateTypeSites(type);
        return SUCCESS;
    }

ниже мой класс дао

public class TypeSitesDAOImpl implements TypeSitesDAO {

    @SessionTarget
    Session session;

    @TransactionTarget
    Transaction transaction;

    /**
     * Used to save or update a user.
     */
    public void saveOrUpdateTypeSites(TypeSites type) {
        try {
            session.saveOrUpdate(type);
        } catch (Exception e) {
            transaction.rollback();
            e.printStackTrace();
        }
    }

ниже мой класс логинации

public class LoginAction extends ActionSupport implements SessionAware, ModelDriven<User>{

    private static final long serialVersionUID = -3369875299120377549L;

    private User user = new User();
    private Map<String, Object> sessionAttributes = null;
    private List<User>          userList = new ArrayList<User>();
    private UserDAO             userDAO  = new UserDAOImpl();

    @Override
    public String execute(){
        System.out.println("inside execute");
        if("admin".equals(user.getName()) && "admin".equals(user.getPassword())){
        //if(userDAO.find(user.getName(),user.getPassword())){   
            sessionAttributes.put("USER", user);
            return SUCCESS;
        }
        return INPUT;
    }



    @Override
    public void setSession(Map<String, Object> sessionAttributes) {
        this.sessionAttributes = sessionAttributes;
    }

    @Override
    public User getModel() {
        return user;
    }

}

Класс AuthenticationInterceptor:

public class AuthenticationInterceptor implements Interceptor {

    private static final long serialVersionUID = -5011962009065225959L;

    @Override
    public void destroy() {
        //release resources here
    }

    @Override
    public void init() {
        // create resources here
    }

    @Override
    public String intercept(ActionInvocation actionInvocation)
            throws Exception {
        System.out.println("inside auth interceptor");
        Map<String, Object> sessionAttributes = actionInvocation.getInvocationContext().getSession();

        User user = (User) sessionAttributes.get("USER");

        if(user == null){
            return Action.LOGIN;
        }else{
            Action action = (Action) actionInvocation.getAction();
            if(action instanceof UserAware){
                ((UserAware) action).setUser(user);
            }
            return actionInvocation.invoke();
        }
    }

Struts.xml:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <package  name="default"  extends="hibernate-default">

       <interceptors>
            <interceptor name="authentication"
                class="com.inwi.interceptors.AuthenticationInterceptor"></interceptor>
            <interceptor-stack name="authStack">
                <interceptor-ref name="authentication"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="authStack"></default-interceptor-ref>

        <global-results>
            <result name="loginAction" type="redirect">/home.action</result>
        </global-results>

        <action name="home">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result>/login.jsp</result>
        </action>

        <action name="loginAction" class="com.inwi.action.LoginAction">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result name="success">/dashboard.jsp</result>
            <result name="input">/loginError.jsp</result>
        </action>
        <action name="welcome" class="com.inwi.action.WelcomeAction">
            <result name="success">/dashboard.jsp</result>
        </action>
  <action     name="saveOrUpdateTypeSites"  method="saveOrUpdate"   class="com.inwi.action.TypeSitesAction">
            <result name="success" type="redirect">listTypeSites</result>
        </action>
        <action     name="listTypeSites"            method="list"           class="com.inwi.action.TypeSitesAction">
            <result name="success">/typeSiteMain.jsp</result>
        </action>

0 ответов

Другие вопросы по тегам