大家好,在公司长时间没做codeing工作,对一些简单基础的框架运用生疏了好多好多,现阶段重新拾起编码能力,自己搭建简单的ssh2整合框架,遇到了让我很困惑的问题,希望能得到大家的帮助和解决。先在这谢谢你们!我的问题是:我在web界面index.jsp请求struts2配置中的一个action。action调用hibernate自动生成的dao.findALL方法查询到数据,action成功,返回success.jsp。
但让我非常困惑的是如果action名称为"employee",请求就会失败:
<action name="employee" class="EmployeeAction"> 就会抛空指针异常
Messages:  
File: com/wr/action/EmployeeAction.java 
Line number: 28 
--------------------------------------------------------------------------------
Stacktraces
java.lang.NullPointerException 
    com.wr.action.EmployeeAction.execute(EmployeeAction.java:28)
    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)
只要action名称随便改一个,比如说employee123 ,
<action name="employee123" class="EmployeeAction"> 再次请求action,程序就能正常访问,且正常跳转到success.jsp页面来。这问题已困扰两天了。刚无意中改下action名称才发现这错误的地方。我的问题是:为什么action名称不能使用"employee",和哪些地方配置有冲突?可我也没发现和哪些配置名称有冲突的地方。不知道了。希望能得到贴里朋友的分析帮助和指点。先谢谢你们。Web框架Java

解决方案 »

  1.   

    配置文件中的name和页面中的action设置一致就OK了
      

  2.   

    楼主说了  只要action名称随便改一个,比如说employee123  这样的话页面中的action和配置文件中的action应该是一样的吧
      

  3.   

    com.wr.action.EmployeeAction.execute(EmployeeAction.java:28)写的是什么代码?
      

  4.   

    struts2配置文件中action名称和页面访问action名称是一致的。就action名称配置为”employee“ 访问程序就抛空指针异常。
      

  5.   

    里面就是执行数据库查询方法,成功范围success。
    @Override
    public String execute() throws Exception {
    List<Employee> employees = employeeDAO.findAll();
    return SUCCESS;
    }
      

  6.   

    查看下web.xml 的配置文件,action的后缀你写的是什么,还有查看(EmployeeAction.java:28)是否有对象没有声明!
      

  7.   

    <action name="employee123" class="EmployeeAction"> 
    这样写你确定是执行的是com.wr.action.EmployeeAction这个类下的方法
      

  8.   

    web.xml action路径名:
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>EmployeeAction.java中对象也已经声明了吧,否则action名称为employee123 它也不会执行成功啊
      

  9.   

    直接配置,或者交给spring 配置,用注解等
      

  10.   

    你acton 的class必须是包名加类名  不要搞错了
      

  11.   

    非常感谢这位朋友能做出这么详细的效果图来,我的struts2.xml文件action就是配置的是sprin配置文件中的bean id ,也就是和你的第一种方案是吻合的。现在问题是:struts2配置文件中action名称不能为"employee" 只要是"employee" 就抛空指针异常,如非<action name="employee234" class="EmployeeAction">程序访问action就是正常的。。搞不懂。。重新copy项目运行,结果依旧。