Freemarker:包含其他对象

时间:2016-04-08 13:31:54

标签: java freemarker

我想打印一个包含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之前我做了一个断点时,里面有地址。

那么如何才能访问房屋的地址?

1 个答案:

答案 0 :(得分:1)

private Adress _adressHouse;课程中有House

Freemarker不会考虑这一点,但是你可能会对公众有所了解。

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

我猜这是第二种情况,因为你声明了tmpHouse.setAdress(tmpAdress);