读书人

小弟初学遇到s2sh空指针错误请

发布时间: 2012-08-03 00:12:14 作者: rapoo

小弟初学,遇到s2sh空指针异常,请高手指点
报错如下

HTML code
java.lang.NullPointerException    p.controller.LoginAction.execute(LoginAction.java:41)    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    java.lang.reflect.Method.invoke(Method.java:597)    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 



其中,我的LoginAction为:
Java code
public class LoginAction implements Action {    private String userName;    private String password;    private IUserService userService;        public String getUserName() {    return userName;    }    public IUserService getUserService() {        return userService;    }    public void setUserService(IUserService userService) {        this.userService = userService;    }    public void setUserName(String userName) {    this.userName = userName;    }    public String getPassword() {    return password;    }    public void setPassword(String password) {    this.password = password;    }        @Override    public String execute() throws Exception {        if([b]userService[/b].IsValidUser(userName, password)){//[b]就是这里userService为null!![/b]            return SUCCESS;            }else {            return ERROR;            }    }


applicationContext.xml文件为:
XML code
<bean id="loginAction" class="p.controller.LoginAction"        abstract="false" lazy-init="default" autowire="default">        <property name="userService">            <ref bean="UserService" />        </property>    </bean>        <bean id="UserService" class="p.Service.Impl.UserService"        abstract="false" lazy-init="default" autowire="default">        <property name="userDAO">            <ref bean="UserDAO" />        </property>    </bean>    <bean id="UserDAO" class="p.dao.impl.UserDAO">        <property name="sessionFactory">            <ref bean="sessionFactory" />        </property>


struts.xml为
XML code
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><constant name="struts.objectFactory" value="spring" /> <package name="main" extends="struts-default"> <action name="login" class="p.controller.LoginAction"><result name="success">/success.jsp</result><result name="error">/error.jsp</result></action></package></struts>  


小弟真是搞昏头了还是一直抛出空指针异常
我是用myeclipse 10,Apache Tomcat/6.0.13(这个是myeclipse 自带的那个),win 7
我在LoginAction.java上打了不少断点,启动Tomcat正常,当部署时,进入debug,这个时候我发现
Java code
public void setUserService(IUserService userService) {        this.userService = userService;    }

这段代码是正常的,而且此时userService是有值的,可是当部署完成,我进入login.jsp首页输入用户名以及密码,再运行的时候,发现LoginAction.java中账户以及密码值都能获取到,上面那段setUserService的代码也会执行,可是这时得到的userService永远是null,如何进入execut()都就抛出最前面的null异常了。

求各位大哥帮忙看看,谢谢!!!!!

[解决办法]
struts.xml的配置文件里。把
<action name="login" class="p.controller.LoginAction">

改为
<action name="login" class="loginAction">

即struts.xml的class里的内容跟spring配置文件里的id一致。
改过之后你再试试

读书人网 >Java Web开发

热点推荐