HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
UserAction.add(UserAction.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
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:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
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:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  hello.jsp 里 action为useradd.action 转到useraction类存储user实体类时,调用getHibernateTemplate().saveOrUpdate(user);出错 查了很久了,大家谁能帮下啊 
tomcat6.0 + jdk1.6 + eclipse--------------------lib--------------------项目附代码:
------------applicationContext.xml (数据源 跟 spring中集成hibernate)
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  <bean id="dataSource"  
  class="org.apache.commons.dbcp.BasicDataSource"  
  destroy-method="close">  
<property name="driverClassName"  
value="com.mysql.jdbc.Driver" />  
<property name="url" value="jdbc:mysql://localhost:3306/ssh"></property>  
<property name="username" value="root"></property>  
<property name="password" value="wl890830"></property>  
</bean>  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>User</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
</bean><bean id="userAction" class="UserAction">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>  
--------------------UserAction.java (存储数据类)
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserAction extends HibernateDaoSupport {
public void add() {
User user = new User();
user.setName("aa");
user.setAddress("beijing");
user.setAge("11");
getHibernateTemplate().saveOrUpdate(user);
}
}
--------------------------User.java (实体类)
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "user")
public class User {
@Id
public String name;
public String age;
public String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}}
-------------------------web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SSH0701</display-name>  <!-- struts Framework -->  
  <filter>  
  <filter-name>struts2</filter-name>  
  <filter-class>  
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  </filter-class>  
  </filter>  
  <filter-mapping>  
  <filter-name>struts2</filter-name>  
  <url-pattern>/*</url-pattern>  
  </filter-mapping>  
   
  <!-- Spring Framework -->  
<context-param>  
  <param-name>contextConfigLocation</param-name>  
  <param-value>/WEB-INF/applicationContext.xml</param-value>  
  </context-param>  
  <listener>  
  <listener-class>  
  org.springframework.web.context.ContextLoaderListener  
  </listener-class>  
  </listener>  
</web-app>
----------------------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 namespace="/" name="struts2" extends="struts-default">  
  <action name="useradd" method="add" class="UserAction" >  
  <result name="success">OK.jsp</result>  
  </action>  
  </package>  
  </struts>  
----------------------hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="useradd.action" method="post">
<input type="submit" value="提交">
</form></body>
</html>

解决方案 »

  1.   

    既然UserAction继承了HibernateDaoSupport,那得把SessionFactory注给它,要不然Spring产生sessionFactory不就没用了。另外,saveOrUpdate()这样的原子性操作放到Dao里面去执行,再抽取一个service层调用Dao层,action里面就直接调用service层。这样的设计可扩展性更好些,事务的边界更容易划分
      

  2.   

    我问的是我出的错误,这只是事例,能帮我看下嘛,我注给他sessionfactory了,请看applicationcontext。xml
      

  3.   

    <action name="useradd" method="add" class="UserAction" >  写成
    <action name="useradd" method="add" class="userAction" > class就是你spring文件的那个ID 
      

  4.   

    <result name="success">/OK.jsp</result>  
      

  5.   

     
    运行时 错误  错误点在
    useraction  add()的getHibernateTemplate().saveOrUpdate(user)方法  save()方法 一样出这个错误
      

  6.   


    哥哥 我的错误 在useraction  struts我没有配置错 错误在hibernate存储那里