簡體   English   中英

Freemarker:包含其他對象的對象列表

[英]Freemarker : list of objects which contains other object

我想用FreeMarker語言打印包含其他對象的對象列表

例如,我有一個Java對象:

public class Adress
{
   private String _street;
   private String _city;
}

和另一個Java對象:

public class House
{
     private int _nb_room;
     private Adress _adressHouse;
}

在創建包含我的bdd數據的列表之后:

public Collection<House> getHousesList()
{
   Collection<House> housesList = new ArrayList<House>();
   DAOUtil daoUtil = new DAOUtil( "SELECT nb_room, street, city FROM house", bdd);
   while(daoUtil.next())
   {
      House tmpHouse = new House();
      tmpHouse.setNbRoom(daoUtil.getString(1));

      Adress tmpAdress = new Adress();
      tmpAdress.setStreet(daoUtil.getString(2));
      tmpAdress.setStreet(daoUtil.getString(3));

      tmpHouse.setAdress(tmpAdress);
      housesList.add(tmpAdress);
   }
   daoUtil.free();
}

在另一個文件中,我將列表發送到html:

model.put('houseList',model.put('housesList',getHousesList());

在我的html中,我有:

<table>
   <#list houseList houseTmp>
      <tr>
         <td>${houseTmp.nb_room!''}</td>
         <td>${houseTmp.adressHouse.street!''}</td>
         <td>${houseTmp.adressHouse.city!''}</td>
      </tr>
   </#list>
</table>

當我在瀏覽器上查看HTML時,只有打印房間數而不是地址,但是當我在將列表發送到HTML之前做一個斷點時,里面就有地址。

那么我該如何訪問房屋地址?

您有一個private Adress _adressHouse; 在您的House課程中。

Freemarker不會考慮這一點,但是您可能會遇到公眾獲取者。

如果您有getAdressHouse() ,請使用${houseTmp.adressHouse.street!''} 如果您有getAdress() ,請使用${houseTmp.adress.street!''}

我猜這是第二種情況,因為您聲明了tmpHouse.setAdress(tmpAdress);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM