JavaServer Faces Study

JSF的一些学习经验与大写分享

统计

留言簿(1)

阅读排行榜

评论排行榜

2008年2月16日 #

Hibernate查询,无数据正常,有数据出现java.lang.NullPointerException 异常

现象
  在使用JSF+Spring+Hibernate时,执行多对一查询时,出现异常!代码如下:

  Hibernate影射文件:
 
<hibernate-mapping>
    
<class name="com.jsfStudy.db.bo.TbPackinginfo" table="tb_packinginfo" catalog="danzhen">
        
<id name="piIdN" type="integer">
            
<column name="pi_id_N" />
            
<generator class="native" />
        
</id>
        
<many-to-one name="tbMakemxd"
            
class="com.jsfStudy.db.bo.TbMakemxd" fetch="select">
            
<column name="pi_mxdId_N" />
        
</many-to-one>
        
<property name="piTaskIdC" type="string">
            
<column name="pi_taskId_C" length="10" unique="true"></column>
        
</property>

           ...

       </class>
</hibernate-mapping>

  java文件:
    public TbPackinginfo findByMxdNo(String mxdNo) throws DataAccessException{
            List list
=getHibernateTemplate().find(Constants.TBPACKINGINFO_FINDBYMXDNO,mxdNo);
            Iterator it
=list.iterator();
                TbPackinginfo pack
= new TbPackinginfo();
            
if(it.hasNext()){
                    pack
=(TbPackinginfo) it.next();
                }

            
return pack;
    }
  如果数据库中没有记录,则一切正常;如果数据库中有记录,则出现java.lang.NullPointerException 异常。
  java.lang.NullPointerException at org.hibernate.tuple.AbstractEntityTuplizer.createProxy

解决方式:
  经在网上搜索后,终于找到解决的方法,现在与大家一起分享!
  1、更改加载方式为立即加载!即在多对一的影射中增加: lazy="false"
 
<hibernate-mapping>
    
<class name="com.jsfStudy.db.bo.TbPackinginfo" table="tb_packinginfo" catalog="danzhen">
        
<id name="piIdN" type="integer">
            
<column name="pi_id_N" />
            
<generator class="native" />
        
</id>
        
<many-to-one name="tbMakemxd"
            
class="com.jsfStudy.db.bo.TbMakemxd" fetch="select"lazy="false">
            
<column name="pi_mxdId_N" />
        
</many-to-one>
        
<property name="piTaskIdC" type="string">
            
<column name="pi_taskId_C" length="10" unique="true"></column>
        
</property>

           ...

       </class>
</hibernate-mapping>

  或者
 
   2、升级cglib_2.1.3.jar至cglib_2.2.jar;
    cglib_2.2_beta1.jar文件下载地址:
    http://sourceforge.net/project/showfiles.php?group_id=56933&package_id=98218&release_id=419752

posted @ 2008-02-17 20:58 Yangjm 阅读(1359) | 评论 (0)编辑 收藏

JSF页面中如何弹出对话框

问题:
  在JSF页面中,在触发一个动作之前弹出一个确认对话框(例如:删除一条记录,取消编辑)。
解决方式:
  使用JavaScript中的confirm()方法实现!
  如果有更好的方式,希望能够分享!
实现:
  1、对于<h:commandLink>组件: 
   
<h:commandLink action="#{bookingShip.affirmBook}" 
      onclick
="if (!confirm('#{msgs.confirm_areYouSure}')) return false;">
     
<h:outputText value="#{msgs.button_submit}" rendered="#{task.mxdStateN<1}"/>
</h:commandLink>

  上述代码中:#{msgs.confirm_areYouSure},在资源文件中为:“您确认这样做吗?”
  解析成HTML后:
 
<a href="#" onclick="
        
var a=function(){
             if (!confirm('您确认这样做吗?')) 
                  return false;
         };
         var b=function(){
             if(typeof jsfcljs == 'function'){
                 jsfcljs(document.forms['j_id_jsp_1722095761_5'],'j_id_jsp_1722095761_9:3:j_id_jsp_1722095761_45,j_id_jsp_1722095761_9:3:j_id_jsp_1722095761_45','');
             }
             return false
         };
        return (a()==false) ? false : b();
">
    提交
  </a>
  
  屏幕显示:
 

  2、对于<h:commandButton>组件:
 
<h:commandButton onclick="if (!confirm(#{msgs.confirm_areYouSure}')) return false"/>
  在这里的commandButton被解析成了一个提交按钮。如果javaScript返回true值这个表单会被提交,如果返回false将会忽略表单的提交。

posted @ 2008-02-16 10:15 Yangjm 阅读(2761) | 评论 (0)编辑 收藏

开张了

    使用JSF,是个新手!
    希望能够将在学习使用的过程中,遇到的一些问题及解决的方法与大家一起共享!
    在尝试使用JSF的过程中,还使用了以下一些技术!
    Spring,Hibernate,Ajax4JSF,MySQL   

posted @ 2008-02-16 09:50 Yangjm 阅读(160) | 评论 (0)编辑 收藏