2013-02-12 81 views
1

我正在使用jsp,hibernate和spring。jstl顯示嵌套對象數據

我的問題是,我有一個名爲「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> 

任何幫助在所有將不勝感激

感謝

+0

打開頁面時瀏覽器出現錯誤嗎? – 2013-02-12 05:25:32

+1

我會懷疑延遲加載問題。查看LazyInitializationException的日誌。 – 2013-02-12 06:42:51

+0

你是對的錢。我關閉了懶加載,它像冠軍一樣工作。那麼爲了使用延遲加載,我需要做些什麼?我不得不說,在某些情況下,這可能會派上用場。我還要感謝JB指出我的語法錯了。我開始按照JB的方式使用它,但是陷入懶惰的加載問題讓我失望。我猜想着急,沒有閱讀堆棧跟蹤對我來說真的很愚蠢。 – robasc 2013-02-12 14:35:24

回答

3

CarSearchList實例的字段類型爲User,另一個字段的類型爲Car。而你的代碼正在試圖迭代forEach,在CarSearchList.user上。但user不是一個集合或一個數組。這是一個簡單的對象。沒有什麼可迭代的。

此外,用戶類不具有任何name屬性。它具有「第一」屬性和最後一個屬性,但這些屬性直接在用戶中,而不是在子對象中。

所以,你只需要

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

感謝您的幫助JB和Haim。非常感謝 – robasc 2013-02-13 04:49:02