配置Spring时出现的问题:NullPointerException
实在找不到原因了,今天弄了一天了,中间除了现在 "It is indirectly referenced from required .class files" 问题上也浪费不少时间,hofman有空的帮看一眼吧。 另外我连数据库时加上 ?useUnicode=true&characterEncoding=UTF-8 后中文问题依旧,不过这个不重要,可能是其它方面出的问题。

先贴我的 action 类,已经精简到单元测试了,在用hibernate直接操作时都是没有问题的:
CategoryAction.java
package com.blog.struts.action;

import "<struts>";

import com.blog.WpTerms;
import com.blog.WpTermTaxonomy;
import com.blog.WpTermsDAO;
import com.blog.WpTermTaxonomyDAO;

public class CategoryAction extends Action {

    private WpTermsDAO wpTerms;
    private WpTermTaxonomyDAO wpTermTaxonomy;

    public void setWpTerms(WpTermsDAO wpt) {
        this.wpTerms = wpt;
    }

    public void setWpTermTaxonomy(WpTermTaxonomyDAO wptTax) {
        this.wpTermTaxonomy = wptTax;
    }

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        CategoryForm cf = (CategoryForm) form;
        // stub
        String name = cf.getCatName();
        ......

        try {
            WpTerms wpt = new WpTerms();
            ......

            wpTerms.save(wpt);

            System.out.println("新目录创建成功: " + wpt.getTermId());
            return mapping.findForward("createSuccess");
        } catch (Exception e) {
            e.printStackTrace();
            request.setAttribute("errorMessage", "保存目录信息时出错,错误代码:01。");
        }

        return mapping.findForward("createFailed");
    }
}

WpTermsDAO.java
package com.blog;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class WpTermsDAO extends HibernateDaoSupport {

    protected void initDao() {
        // do nothing
    }

    public void save(WpTerms transientInstance) {
        System.out.println("============================");
        //单无测试只剩这些了,本来应该有不少方法的
    }
}

hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="connection.url">jdbc:mysql://localhost:3306/home_wp_blog?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="myeclipse.connection.profile">
            com.mysql.jdbc.Driver
        </property>
        <mapping resource="com/blog/WpTerms.hbm.xml"></mapping>
        <mapping resource="com/blog/WpTermTaxonomy.hbm.xml"></mapping>

    </session-factory>

</hibernate-configuration>

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="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml">
        </property>
    </bean>
    <bean id="WpTermsDAO" class="com.blog.WpTermsDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory"></ref>
        </property>
    </bean>
    <bean id="WpTermTaxonomyDAO" class="com.blog.WpTermTaxonomyDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory"></ref>
        </property>
    </bean>

    <bean name="/category" class="com.blog.struts.action.CategoryAction"
        singleton="false">
        <property name="wpTerms">
            <ref bean="WpTermsDAO" />
        </property>
        <property name="wpTermTaxonomy">
            <ref bean="WpTermTaxonomyDAO" />
        </property>
    </bean>

</beans>

错误信息:
java.lang.NullPointerException
    at com.blog.struts.action.CategoryAction.execute(CategoryAction.java:74)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    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.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    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:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
meiking   2008-05-11 23:54:10 评论:7   阅读:80   引用:0
@2008-05-12 13:06:25  meiking
好啊,我正想着这周未上哪蹭饭去呢。
@2008-05-12 12:34:52  idiot
   根据提示是CategoryAction.java:74行错误,但你的代码行数贴上来已经缩减了一些行数,所以你在本地跟踪下吧。
另外感觉你这个例子就不是很好,action直接调用dao数据库操作,跳过了业务逻辑层,难怪看spring配置那么别扭。
我有两本很不错的书(关于hibernate和spring的,里面的项目能够跑起来),有时间过来拿,可以借给你看看。感觉能给你减少走弯路。
@2008-05-12 10:01:15  hofman
   HTT P,c o m, c n ,Q Q等全部封杀,每天拦截垃圾留言无数,误杀率不到5%。
@2008-05-12 00:22:57  meiking
咱博客的评论里好像是屏蔽掉了 "H TT P"吧,老是说我不受欢迎,才明白过来可能是过滤的原因。
@2008-05-12 00:21:13  meiking
恩,你写的那篇文章我看过很多篇了,主要是了解框架,而我是跟着网上另一篇文章走的,因为刚刚好用的IDE是完全一样的。 可能是我有点急进了,下次还是应该从简单的例子开始学起。

log.csdn.net/chenyun2000/archive/2007/11/21/1896670.aspx
这是我参照的例子,也还比较完整,不过不够细,照他这走碰见不少问题。
@2008-05-12 00:11:48  hofman
   /lunzi/51263.html,/hofman/21949.html,lunzi学习时,比较注意参考,这样少走了弯路。
@2008-05-11 23:56:00  meiking
对了,我现在的环境是 hibernate3.1和spring2.0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2006 powered by YuLog