当前位置: 首页 > 知识库问答 >
问题:

用列表填充表时JSP中出现异常

宫高义
2023-03-14

我有这个jsp代码。

<c:forEach var="item" items="${UsersList}">
 <tr>
 <td><c:out value="${item.userId}" /></td>
 <td><c:out value="${item.userName}" /></td>
 <td><c:out value="${item.car}" /></td>  //Here , I am getting exception
 </tr>
 </c:forEach>

UserList由数据类型为“Car”的名为“car”的属性组成

用户的Pojo类:

@Entity
@Table(name = "Users")
public class Users implements java.io.Serializable {

private int userId;
private Car car;
private Groups groupId;
private UserType userType;
private String userName;

//getters and setters
}

我使用的是Spring MVC框架。在页面加载时,我的应用程序应该显示一个包含用户列表的表格。在controller中,我查询用户列表,并将其添加到ModelAndView对象中

控制器代码:

List<Users> userList = service.getUserList();  //this will get list of users
//System.out.println("Userlist ==" +userList.size()); 
mv.addObject("UsersList" , usersList);
//skipped remaining code

当我尝试不使用car(tabledata标记)时,JSP正在毫无例外地运行,并在表中显示用户列表。如果我尝试添加car(tabledata标签),那么我会得到一个异常

HTTP Status 500 - An exception occurred processing JSP page /WEB-INF/pages/CreateUser.jsp at line 199 
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/CreateUser.jsp at line 199

196:<tr>
197:<td><c:outvalue="${item.userId}" /></td>
198:<td><c:out value="${item.userName}" /></td>
199:<!-- <td><c:out value="${item.car}" /></td> --> 
200:<td><c:out value="${item.modifiedDate}" /></td>
201:</tr>
202:</c:forEach>                                            


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWra    pper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:4    70)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutput    Model(InternalResourceView.java:168)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:3    03)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.j    ava:1244)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(Disp    atcherServlet.java:1027)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServl    et.java:971)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServle    t.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkSer    vlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java    :861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.ja    va:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause

org.hibernate.LazyInitializationException: could not initialize proxy - no  Session
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:149)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:195)
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
com.bdp.pojo.Role_$$_javassist_11.toString(Role_$$_javassist_11.java)
org.apache.taglibs.standard.tag.common.core.OutSupport.out(OutSupport.java:178)
org.apache.taglibs.standard.tag.common.core.OutSupport.doStartTag(OutSupport.java:99)
org.apache.jsp.WEB_002dINF.pages.CreateUser_jsp._jspx_meth_c_005fout_005f2(CreateUser_jsp.java:667)
org.apache.jsp.WEB_002dINF.pages.CreateUser_jsp._jspx_meth_c_005fforEach_005f0(CreateUser_jsp.java:591)
org.apache.jsp.WEB_002dINF.pages.CreateUser_jsp._jspService(CreateUser_jsp.java:264)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframeweb.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

共有2个答案

阎功
2023-03-14

您收到错误LazyInitializationException<代码>用户懒惰汽车中的对象对象<代码>服务。getuserlist()方法可以通过获取汽车对象引入。

抓取策略

获取类型。懒惰是随需应变的

获取类型。迫不及待

@OneToOne(fetch=FetchType.EAGER)当你想一直把用户对象作为汽车的对象时。

service.getUserList()请写。

编辑:

示例getUserList方法:

public List<Users> getUserList(){
    String sql = " SELECT user from Users user left join fetch user.car ";
    Query query = entityManager.createQuery(sql);
    return query.getResultList();
}

云宝
2023-03-14

因为您使用的是hibernate惰性初始化,所以每当您将主对象返回到JSP时,它都会尝试获取子类。这不会发生,因为会议将结束。

因此,将您的获取策略更改为Eager

关于汽车的getter方法:

@OneToOne(fetch=FetchType.EAGER)

这将导致在获取主类时立即获取car

在查询时制作:

 List<Users> items = session.createCriteria(Users.class)
                    .setFetchMode("car", FetchMode.JOIN).
                    .createAlias("car", "car").
                    .list();
 类似资料:
  • 我将一些Javascript定义为: 这是从函数调用的: 当页面尝试加载时,我在控制台中得到以下信息: 错误:缩小的反应错误#31;访问https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7b1%7d&args[]=获取完整消息,或使用非缩小的开发环境获取完整错误和其他有用警

  • 问题内容: 如何用对象类型的列表中的值填充JTable。我的代码如下所示: 我已经有了列,列表将来自schedule变量?考虑这些列,如何将其放到表中? 问题答案: 看一下DefaultTableModel。您可以遍历List并为每一行创建Object数组。

  • postgres是否试图填充CSV中的所有列并抱怨,因为它没有在CSV中找到具有非空约束的列?如何告诉postgres不要担心其他列,而是将命令中声明的name列复制到表中?

  • 我正在制作一组自定义swing组件,这些组件实现各种属性,如标志或。我在尝试填充各种自定义组件的,然后根据每个组件的对列表进行排序时遇到问题。 我试图做到这一点的方法是让我的组件实现一个名为的接口,该接口实现一个方法。然后使用我的

  • 我一直在看教程,我似乎无法得到一个表来填充。我也在使用net beans和scenebuilder。如有任何帮助,我们将不胜感激!挣扎了5个小时。 下面是的代码 以下是我的主要内容:

  • 在SpringMVC项目的控制器中,我确实有一个列表,我将其放在模型映射中,如下所示。 现在我想在thymeleaf视图中使用post方法动态填充它。为此,我使用了一个JavaScript脚本。这不是所有的html代码,但为了简单起见,我只添加了JS部分。 这是测试有效的后方法。 它向我显示了错误:错误解析模板[],模板可能不存在或任何已配置的模板解析程序都无法访问,这肯定是因为:。有没有办法动态