我想打印一个包含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之前我做了一个断点时,里面有地址。
那么如何才能访问房屋的地址?
答案 0 :(得分:1)
private Adress _adressHouse;
课程中有House
。
Freemarker不会考虑这一点,但是你可能会对公众有所了解。
如果您有getAdressHouse()
,请使用${houseTmp.adressHouse.street!''}
。如果您有getAdress()
,请使用${houseTmp.adress.street!''}
。
我猜这是第二种情况,因为你声明了tmpHouse.setAdress(tmpAdress);