我正在尝试从数据库中检索数据并将其放入数据表中的JSF视图中,但是我无法解决Exception
个问题。我将必要的jar复制到lib文件夹中,这是列表:
以下是JSF View的代码:listFournisseur.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<link rel="stylesheet" type="text/css" href="../css/styles.css"/>
</head>
<h:body>
<h:form>
<h:dataTable var="fournisseur" value="#{fournisseurBean.listFournisseurs}" border="1">
<h:column>
<f:facet name="header">
<h:outputLabel value="nom" />
</f:facet>
#{fournisseur.nomfour}
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="raison sociale" />
</f:facet>
#{fournisseur.raisonsfour}
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Adresse" />
</f:facet>
#{fournisseur.adressef}
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
以下是ManagedBean的代码:FournisseurBean.java
package com.fst.bibliotheque.beans;
import java.util.List;
import com.fst.bibliotheque.dao.FournisseurHome;
import com.fst.bibliotheque.persistance.Fournisseur;
import com.fst.bibliotheque.services.FournisseurService;
public class FournisseurBean {
private FournisseurService gestionFournisseur;
private List<Fournisseur> listFournisseurs;
private int tailleListe;
public List<Fournisseur> getListFournisseurs() {
if(gestionFournisseur==null)
gestionFournisseur=new FournisseurService();
listFournisseurs=gestionFournisseur.findAllList();
tailleListe=listFournisseurs.size();
return listFournisseurs;
}
public void setListFournisseurs(List<Fournisseur> listFournisseurs) {
this.listFournisseurs = listFournisseurs;
}
}
最后,这里是与图层服务相关的代码:FournisseurServices.java位于负责检索数据的方法中。
package com.fst.bibliotheque.services;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.fst.bibliotheque.dao.FournisseurHome;
import com.fst.bibliotheque.dao.HibernateUtil;
public class FournisseurService {
private FournisseurHome dao;
public FournisseurService() { dao = new FournisseurHome() ; }
public List findAllList() {
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx= null ;
List l=null;
try{
tx=session.beginTransaction();
l=dao.findAll();
tx.commit() ;
}catch(RuntimeException ex){
if(tx!= null) tx.rollback();
ex.printStackTrace() ; }
return l;
}
}
函数findAllList()调用位于dao层的findAll()函数: Fournisseurdao.java:
package com.fst.bibliotheque.dao;
// Generated Dec 7, 2013 2:15:19 AM by Hibernate Tools 3.4.0.CR1
import java.util.List;
import javax.naming.InitialContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import com.fst.bibliotheque.persistance.Fournisseur;
import static org.hibernate.criterion.Example.create;
/**
* Home object for domain model class Fournisseur.
* @see com.fst.bibliotheque.dao.Fournisseur
* @author Hibernate Tools
*/
public class FournisseurHome {
private static final Log log = LogFactory.getLog(FournisseurHome.class);
private final SessionFactory sessionFactory = getSessionFactory();
protected SessionFactory getSessionFactory() {
try {
return HibernateUtil.getSessionFactory();
} catch (Exception e) {
log.error("Could not locate SessionFactory in JNDI", e);
throw new IllegalStateException(
"Could not locate SessionFactory in JNDI");
}
}
public List findAll () {
Criteria crit =sessionFactory.getCurrentSession().createCriteria(Fournisseur.class);
return crit.list();
}
public List findAll (Order defaultOrder) {
Criteria crit = sessionFactory.getCurrentSession().createCriteria(Fournisseur.class);
if (null != defaultOrder) crit.addOrder(defaultOrder);
return crit.list();
}
}
执行后,我遇到了这个例外:
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/BibliothequeJSFHib1] threw exception [org/hibernate/Session] with root cause
java.lang.ClassNotFoundException: org.hibernate.Session
有没有人知道如何解决它?
答案 0 :(得分:0)
您的FournisseurService - 类尝试打开Hibernate-Session。
public class FournisseurService {
public List findAllList() {
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
...
}
}
Hibernate Session是一个ORM-Mapper(Database-Stuff),是Hibernate-Core库的一部分,必须添加到您的项目中。