【问题标题】:jstl display nesting object datajstl 显示嵌套对象数据
【发布时间】:2013-01-27 08:44:33
【问题描述】:

我正在使用 jsp、hibernate 和 spring。

我的问题是我有一个名为“carsearchlist”的对象,而在 carsearchlist 中,我还有另外两个名为 user 和 car 的对象。由于某种原因,这个 foreach 循环将不起作用。

    <c:forEach var="csl" items="${carsearchlist}">
     ${csl.id}
         <c:forEach var="name" items="${csl.user}">
               ${name.first} 
         </c:forEach>
    </c:forEach>

我的数据显示 HQL 编辑器,如下面的屏幕截图所示:

http://i244.photobucket.com/albums/gg5/robasc/ScreenShot2013-02-12at120841AM_zpsdb5449b4.png

这也是我对 CarSearchList 的映射:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Feb 9, 2013 8:14:19 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.usedcarsearch.domain.CarSearchList" table="Car_Search_List">
    <id name="id" type="java.lang.Integer">
        <column name="id" />
        <generator class="identity" />
    </id>
    <many-to-one name="car" class="com.usedcarsearch.domain.Car" fetch="select">
        <column name="fkCarId" not-null="true" />
    </many-to-one>
    <many-to-one name="user" class="com.usedcarsearch.domain.User" fetch="select">
        <column name="fkUserId" not-null="true" />
    </many-to-one>
</class>
</hibernate-mapping>

任何帮助都将不胜感激

谢谢

【问题讨论】:

  • 打开页面时浏览器是否出现错误?
  • 我怀疑延迟加载问题。查看 LazyInitializationException 的日志。
  • 你是对的。我关闭了延迟加载,它就像一个冠军。那么我需要做什么才能使用延迟加载呢?我不得不说,在某些情况下这可能会派上用场。我还要感谢 JB 指出我的语法错误。我开始以 JB 的方式使用它,但陷入延迟加载问题让我失望了。我想着急而不阅读堆栈跟踪对我来说真的很愚蠢。

标签: java spring hibernate jsp jstl


【解决方案1】:

CarSearchList 实例有一个 User 类型的字段和另一个 Car 类型的字段。您的代码正在尝试使用forEachCarSearchList.user 上进行迭代。但user 不是集合或数组。这是一个简单的对象。没有什么可以迭代的。

此外,User 类似乎没有任何name 属性。它有一个 'first' 属性和一个 last 属性,但它们直接在 User 中,而不是在 Name 子对象中。

所以你只需要

<c:forEach var="csl" items="${carsearchlist}">
     ${csl.id}
     ${csl.user.first} 
</c:forEach>

【讨论】:

  • 感谢 JB 和 Haim 的所有帮助。非常感谢
【解决方案2】:

快速而肮脏的方法是将lazy属性设置为false。 请注意,这可能会导致性能问题。 解决此问题的常用做法是使用“在视图过滤器中打开会话”。 这篇博文可以提供帮助 http://sourabhissourabh.blogspot.com/2008/03/what-is-opensessioninviewfilter-and-how.html

这种方法的缺点是汽车搜索列表、用户或汽车的设置值将被持久化到数据库中。所以你必须小心。

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2023-02-10
    • 2016-10-13
    相关资源
    最近更新 更多