2009-11-18 20:51:10 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.struts2.components.table.WebTable.setSortOrder(WebTable.java:268)
at org.apache.struts2.views.jsp.ui.table.WebTableTag.populateParams(WebTableTag.java:53)
at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:53)
at org.apache.jsp.update_jsp._jspx_meth_s_005ftable_005f0(update_jsp.java:150)
at org.apache.jsp.update_jsp._jspx_meth_s_005fform_005f0(update_jsp.java:121)
at org.apache.jsp.update_jsp._jspService(update_jsp.java:82)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:139)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)

         。
         。
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:866)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:716)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1498)
at java.lang.Thread.run(Thread.java:619)struts.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="user" extends="struts-default">

<action name="saveUser" class="saveUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/save.jsp</result>
</action>

<action name="listUser" class="listUserAction">
<result>/list.jsp</result>
</action>

<action name="deleteUser" class="removeUserAction">
<result name="success" type="redirect">listUser.action</result>
</action>

<action name="updatePUser" class="updatePUserAction">
<result name="success" >/update.jsp</result>
</action>

<action name="updateUser" class="updateUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/update.jsp</result>
</action>

<action name="generateExcel" class="generateExcelAction">
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">filename="AllUsers.xls"</param>
<param name="inputName">downloadFile</param>
</result>
</action>

</package>
</struts>applicationContext.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!--  destory-method="close" 用完后把连接放回连接池--> 
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mytest"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<property name="defaultAutoCommit" value="true"></property>
</bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/test/bean/User.hbm.xml</value>
</list>
</property>
</bean><bean id="userDao" class="com.test.dao.impl.UserDAOImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean><bean id="userService" class="com.test.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean><bean id="saveUserAction" class="com.test.action.user.SaveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean><bean id="listUserAction" class="com.test.action.user.ListUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean><bean id="removeUserAction" class="com.test.action.user.RemoveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean><bean id="updatePUserAction" class="com.test.action.user.UpdatePUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean><bean id="updateUserAction" class="com.test.action.user.UpdateUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean><bean id="generateExcelAction" class="com.test.action.user.GenerateExcelAction" scope="singleton">
<property name="service" ref="userService"></property>
</bean></beans>

解决方案 »

  1.   

    上works文件夹下看源码就知道错误所在,这样的问题只是这样看没人有耐心去回答。
      

  2.   

    update.jsp
    操作了一个空的对象··
      

  3.   

    在struts1里面遇到过这个问题,最后在struts-config.xml里加上
    <message-resources parameter="xxx.struts.ApplicationResources"/>就ok了
    在sturts2里没遇到过,你试试在struts。properties里加上
    struts.custom.i18n.resources=default这句看看
      

  4.   

    回复1楼:
      works下的update_jsp.java文件看不懂,比如提示的错误为:
    at org.apache.jsp.update_jsp._jspx_meth_s_005ftable_005f0(update_jsp.java:150) 
     而update_jsp.java的第150行文件为:
        org.apache.struts2.views.jsp.ui.table.WebTableTag _jspx_th_s_005ftable_005f0 = (org.apache.struts2.views.jsp.ui.table.WebTableTag) _005fjspx_005ftagPool_005fs_005ftable.get(org.apache.struts2.views.jsp.ui.table.WebTableTag.class);
        _jspx_th_s_005ftable_005f0.setPageContext(_jspx_page_context);
        _jspx_th_s_005ftable_005f0.setParent((javax.servlet.jsp.tagext.Tag) _jspx_th_s_005fform_005f0);
      第150行文件:[/color] [color=#FF0000] int _jspx_eval_s_005ftable_005f0 = _jspx_th_s_005ftable_005f0.doStartTag();    if (_jspx_eval_s_005ftable_005f0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
          if (_jspx_eval_s_005ftable_005f0 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
            out = _jspx_page_context.pushBody();
            _jspx_th_s_005ftable_005f0.setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);
            _jspx_th_s_005ftable_005f0.doInitBody();
          }
      

  5.   


    我用了struts2,自己定义的国际化文件有:globalMessages_en.properties 和globalMessages_zh.properties
    其中:globalMessages_en.properties中的内容如下:firstname=firstname
    lastname=lastname
    age=age
    struts.properties内容如下
    struts.custom.i18n.resources=globalMessages但是还是为发现结果出在哪里,若是单独运行update.jsp 文件无法显示该显示的内容。
    update.jsp如下:
    <%@ page language="java" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><html><head>
    <title>Update.jsp</title>
    </head><body>
    <h1><font color="red"><center>Update Users</center></font></h1>
    <s:form action="updateUser">
      <s:table>
    <tr>
      <td>
    <s:hidden name="user.id" value="%{user.id}"></s:hidden>   </td>
    </tr>

    <tr>
      <td>
            <s:textfield name="user.firstname" value="%{user.firstname}" label="%{getText('firstname')}"></s:textfield>   </td>
    </tr>

    <tr>
      <td>
    <s:textfield name="user.lastname" value="%{user.lastname}" label="%{getText('lastname')}"></s:textfield>
      </td>
    </tr>

    <tr>
      <td>
    <s:textfield name="user.age" value="%{user.age}" label="%{getText('age')}"></s:textfield>   </td>
    </tr>

    <tr>
      <td>
    <s:submit></s:submit>   </td>
    </tr> </s:table>
    </s:form>
    </body>
    </html>
      

  6.   


    明明update.jsp有错,但找不出在哪里?
    update.jsp<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><html><head>
    <title>Update.jsp</title>
    </head><body>
    <h1><font color="red"><center>Update Users</center></font></h1>
    <s:form action="updateUser">
    <s:table>
    <tr>
    <td>
    <s:hidden name="user.id" value="%{user.id}"></s:hidden>
    </td>
    </tr>

    <tr>
    <td>
    <s:textfield name="user.firstname" value="%{user.firstname}" label="%{getText('firstname')}"></s:textfield>
    </td>
    </tr>

    <tr>
    <td>
    <s:textfield name="user.lastname" value="%{user.lastname}" label="%{getText('lastname')}"></s:textfield>
    </td>
    </tr>

    <tr>
    <td>
    <s:textfield name="user.age" value="%{user.age}" label="%{getText('age')}"></s:textfield>
    </td>
    </tr>

    <tr>
    <td>
    <s:submit></s:submit>
    </td>
    </tr>

    </s:table>
    </s:form>
    </body></html>
      

  7.   

    我知道问题出在什么地方。。
    就是就是jsp页面中struts2标签的问题。。
    <s:table> 
    <tr> 
    <td> 
    这是你jsp页面中的。。你把<s:table> 和html标签一起使用
    你把<s:table>改成<table>
    这样就没问题了 
    呵呵 我也是刚解决了这个问题