小弟想做个简单的DEMO ,  以便练习整合DWR  可是在这就出现问题了,,,
各位大哥帮小弟看看呀,,,,在网上看说是 UserDaoImpl 继承了HibernateDaoSupport 所以一定要注入SessionFactory 
可是我这不是明明注入了吗,为什么还是这样的错误呀,,,

解决方案 »

  1.   

    你已经继承了HibernateDaoSupportset方法可以不用写你把 getHibernateTemplate()前面都加上个this关键字因为你要用当前类的实例
      

  2.   

    先谢过楼上这位大哥了,,,******************
    你把 getHibernateTemplate()前面都加上个this关键字 
    因为你要用当前类的实例
    ******************
    这个小弟已经改过了,,可是你说的
    *******************
    你已经继承了HibernateDaoSupport 
    set方法可以不用写 
    *******************
    这个不写set方法,在applicationContext.xml里注入时会报没有setter方法呀,,
    ????????你再看看??
    改过以后发现的问题,,,,,,
    ****************************************************又是让我觉得奇怪的事,,,我这样改的,
        <!-- 配置用户DAO组件 -->
        <bean id="UserDaoImpl" class="daoimp.UserDaoImpl">
            <property name="sessionFactory">
                <ref bean="SessionFactory"/>
            </property>
        </bean>
        <!-- 配置消息DAO组件 -->
        <bean id="MessageDaoImpl" class="daoimp.MessageDaoImpl">
            <property name="sessionFactory">
                <ref bean="SessionFactory"/>
            </property>
            <property name="pageSize" value="2"/>
        </bean>
    以前的错误提显:
    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 改前我都是小写sessionfactory,现在改成sessionFactory  竟然能有了,,
    写了个servlet测试一下,,也没有问题,,可问题是,,<property name="sessionFactory">这句话不是注入这个类的属性吗,,
    类里面就是小写的呀,,
    private SessionFactory sessionfactory;这里注入时怎么写成大写F倒可以了呢,,可能是什么愿意导致这样的错误呢,?
      

  3.   

    先谢过楼上这位大哥了,,,******************
    你把 getHibernateTemplate()前面都加上个this关键字 
    因为你要用当前类的实例
    ******************
    这个小弟已经改过了,,可是你说的
    *******************
    你已经继承了HibernateDaoSupport 
    set方法可以不用写 
    *******************
    这个不写set方法,在applicationContext.xml里注入时会报没有setter方法呀,,
    ????????你再看看??
    改过以后发现的问题,,,,,,
    ****************************************************又是让我觉得奇怪的事,,,我这样改的,
        <!-- 配置用户DAO组件 -->
        <bean id="UserDaoImpl" class="daoimp.UserDaoImpl">
            <property name="sessionFactory">
                <ref bean="SessionFactory"/>
            </property>
        </bean>
        <!-- 配置消息DAO组件 -->
        <bean id="MessageDaoImpl" class="daoimp.MessageDaoImpl">
            <property name="sessionFactory">
                <ref bean="SessionFactory"/>
            </property>
            <property name="pageSize" value="2"/>
        </bean>
    以前的错误提显:
    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 改前我都是小写sessionfactory,现在改成sessionFactory  竟然能有了,,
    写了个servlet测试一下,,也没有问题,,可问题是,,<property name="sessionFactory">这句话不是注入这个类的属性吗,,
    类里面就是小写的呀,,
    private SessionFactory sessionfactory;这里注入时怎么写成大写F倒可以了呢,,可能是什么愿意导致这样的错误呢,?
      

  4.   

    dao里面不需要写set方法了 你继承了hibernatedaosupport就可以不写 变量的命名。。最好规范!我以前也遇到过 就是因为命名不规范 找不到!
      

  5.   

    你可以去看下HibernateDaoSupport 的源文件在开头就是个final的setSessionFactory方法之所以你改成大写可以是因为set方法后的 sessionFactory是大写(去掉set后S变小写我想你知道,就不解释了)也就是说你声明的属性
    private SessionFactory sessionfactory;其实没什么用 至于你的一些零零碎碎的问题,等晚上有时间我按你的代码测试一下再看看吧
      

  6.   

     xml中 <property name="sessionFactory">
    注入的是类文件中
    public void setSessionFactory(SessionFactory sessionfactory) {
            this.sessionfactory = sessionfactory;
        }
    S如果红色的名字修改为TestSuccess那么,xml中 <property name="sessionFactory">应该修改为
    xml中 <property name="testSuccess">记住set方法的后边的首字母要大写,但是到了xml中标签<property name=""/>的name的属性名称需要首字母改成小写的,这是规范,记住这个,你以后就永远不会注入错误了