zoukankan      html  css  js  c++  java
  • Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

        近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心。



       Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现:


    org.apache.jasper.JasperException: could not initialize proxy - no Session - Class: org.hibernate.proxy.AbstractLazyInitializer
    File: AbstractLazyInitializer.java

        no session,懒载入。增加jsp页面展现的name这种一个属性。事实上是用getName这个方案去拿到的,可是session已经关闭了。


    解决的办法就是就是写多一个filter。名字也非常直观

    <filter>
         <filter-name >openSessionInview </filter-name>
         <filter-class >org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class>
       
    </filter >
    <filter-mapping >
              <filter-name> openSessionInview</filter-name >
              <url-pattern> /*</ url-pattern>
    </filter-mapping >
    



        在展现层打开session,当然要写在struts的过滤之前,由于责任链的存在,先读取的反而是后实现的。


        就在认为配完之后没问题的时候。有一个问题出现了,发现sessionFactory没有注入,由于我sessionFactory的id给我简写成sf。然后就猜到,应该是OpenSessionInViewFilter这个类须要注入sessionFactory。该类也有get方法,可是名字不匹配,所以注入失败。


        后面尝试用

    <bean id="openSessionInview" class="org.springframework.orm.hibernate3.support.OpenSessionInViewFilter ">
              <property name="sessionFactory" ref="sf"></property>
    </bean>
    

        当然不行。后面查了一下。正确的配置是在web.xml中初始化。

    <filter>
         <filter-name >openSessionInview </filter-name>
         <filter-class >org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class>
         <init-param >
               <param-name> sessionFactoryBeanName</param-name >
              <param-value> sf</param-value >
         </init-param >
    </filter >
    <filter-mapping >
              <filter-name> openSessionInview</filter-name >
              <url-pattern> /*</ url-pattern>
    </filter-mapping >
    

         最后,成功地在jsp页面展现了name属性。




  • 相关阅读:
    开通博客园
    ios关键字
    FirstDay
    An example for pysnmp
    remove debug symbols to a seperate file
    qemu下通过gdb调试内核时 遇到 evaluation of this expression requires the program to have a function "malloc" 错误的解决办法
    关于常识与知识的思考
    基于Qemu在ubuntu上构建linux学习环境
    How to download prebuilt toolchain
    诡异的打印异常BUG
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5137775.html
Copyright © 2011-2022 走看看