我在网络上到处都是,而且我迷失方向,无法解决我的问题。如何正确地将Java对象从Servlet传递到JSP页面
我使用Eclipse创建Web应用程序,在客户端使用JSP,在服务器端使用Servet/Hibernate。 我想从一个servlet传递一个对象到一个JSP页面。
在servlet:
Contact c = dao.getContact(dataID);
request.setAttribute("data", c);
getServletContext()
.getRequestDispatcher("/"+url+"?id="+dataID).forward(request, response);
在JSP页面中:
Contact contact = (Contact)request.getAttribute("data");
联系是一个ORM,其中有像 “姓氏” 属性。
,但我收到此错误信息:
GRAVE: "Servlet.service()" pour la servlet GetData a généré une exception
org.hibernate.HibernateException: No CurrentSessionContext configured!
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:683)
at domain.DAOContact.getContact(DAOContact.java:39)
at domain.GetData.doGet(GetData.java:27)
所以,我试图找出原因,并某处我读,我需要设置当前会话的上下文“线程”在Hibernate配置文件。但我这样做的时候,我得到这个消息:
GRAVE: Servlet.service() for servlet [GetData] in context with path [/CarnetContacts] threw exception [org.hibernate.LazyInitializationException: could not initialize proxy - no Session] with root cause
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at domain.Contact_$$_javassist_1.getLastName(Contact_$$_javassist_1.java)
消息的第二行表明它与延迟加载做,但最后一行我表明,当该程序正在试图获得出现的bug “lastname”属性,它基本上是一个字符串,所以我不认为它是“懒加载”。
所以,如果有人能帮我找到解决方案,那将是非常善良的。在DAO方法的
代码:
public Contact getContact(int contactId){
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
Transaction t = session.beginTransaction();
t.begin();
Contact contact =(Contact) session.load(Contact.class, new Integer(contactId));
t.commit();
return contact;
}
感谢您的回答,它解决了我的PROBL时间:) – Vincent 2011-01-11 14:47:47