Dao实现
public class MySQLDao extends HibernateDaoSupport implements Dao{
//添加消息
public void addMessage(Message message){
System.out.println("ok");
this.getHibernateTemplate().save(message);
}
//修改消息
public void modifyMessage(Message message){
System.out.println("ok");
this.getHibernateTemplate().update(message);
}//添加消息action
public class AddMessageAction extends ActionSupport {
private Message message;
private MySQLDao addMessage;

         //get,set方法略写 @Override
public String execute() throws Exception {

addMessage.addMessage(message);
return super.execute();
}//修改消息action
public class ModifyMessageAction extends ActionSupport{

private Message message;
private int id;
private String password;
private MySQLDao DelMessage;
         ////get,set方法略写 @Override
public String execute() throws Exception {

System.out.println(id+","+password); message.setPassword(password);
message.setId(id); System.out.println(message.getContent());
System.out.println(message.getEmotional());
System.out.println(message.getFrom());
System.out.println(message.getId());
DelMessage.modifyMessage(message);

return SUCCESS;
}
//struts.xml
<action name="AddMessageAction" class="AddMessageAction">
<result name="success">/check.jsp</result>
</action>
<action name="ModifyMessageAction" class="ModifyMessageAction">
<result name="success">/check.jsp</result>
</action>//spring.xml
<bean name="AddMessageAction"  class="com.fy.ming.Board.control.AddMessageAction" scope="prototype">
<property name="message" ref="message"/>
<property name="addMessage" ref="MySQLDao"/>
</bean>
<bean name="ModifyMessageAction"  class="com.fy.ming.Board.control.ModifyMessageAction" scope="prototype">
<property name="message" ref="message"/>
<property name="DelMessage" ref="MySQLDao"/>
</bean>结果:
添加消息正常
修改消息:
java.lang.NullPointerException
com.fy.ming.Board.control.ModifyMessageAction.execute(ModifyMessageAction.java:68)
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:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
//我倒调了好久

解决方案 »

  1.   

    com.fy.ming.Board.control.ModifyMessageAction.execute(ModifyMessageAction.java:68) 
       你检查下,在这一行中你的哪个对象是空的。
      

  2.   

    空指针异常一般出现在你的方法(有对象传进来)里,你对其进行的操作会导致空指针。
    在你的
    //修改消息action 
    public class ModifyMessageAction extends ActionSupport{ private Message message; 
    private int id; 
    private String password; 
    private MySQLDao DelMessage; 
            ////get,set方法略写 @Override 
    public String execute() throws Exception { System.out.println(id+","+password); message.setPassword(password); 
    message.setId(id); System.out.println(message.getContent()); 
    System.out.println(message.getEmotional()); 
    System.out.println(message.getFrom()); 
    System.out.println(message.getId()); 
    DelMessage.modifyMessage(message); return SUCCESS; 

    先打个断点跟进去
    仔细检查message以及get和set方法是否写全
      

  3.   

    注意下 "" 和 null 转换成其他(比如:int date等)的问题!
      

  4.   

    你看下ModifyMessageAction的配置文件有问题没有?是否配置文件属性没有设置!
      

  5.   

    用DuBug看DelMessage是空值,但是它是用spring注入的怎么会是空值呢??????
    addMessage怎么又有值,配置文件也都一样的写法,action也都在收集数据都打出来了
    ~~最后我把代码重写了.
    神奇~就好了.对比了一下发现就改了一个地方.private int id; 
    private String password;
    message.setId(id);
    message.setPassword(password);取消了这个两值就正常了.程序是调好了,但是这个问题还没解决~~~
    难通不能基础int或String吗?