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 之前做一个断点时里面是地址。
那我怎样才能得到房子的地址呢?
您的 House
class 中有一个 private Adress _adressHouse;
。
Freemarker 不会查看那个,但会查看您可能有的 public getter。
如果您有 getAdressHouse()
,请使用 ${houseTmp.adressHouse.street!''}
。如果您有 getAdress()
,请使用 ${houseTmp.adress.street!''}
。
我猜这是第二种情况,正如你所声明的那样tmpHouse.setAdress(tmpAdress);
我想用 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 之前做一个断点时里面是地址。
那我怎样才能得到房子的地址呢?
您的 House
class 中有一个 private Adress _adressHouse;
。
Freemarker 不会查看那个,但会查看您可能有的 public getter。
如果您有 getAdressHouse()
,请使用 ${houseTmp.adressHouse.street!''}
。如果您有 getAdress()
,请使用 ${houseTmp.adress.street!''}
。
我猜这是第二种情况,正如你所声明的那样tmpHouse.setAdress(tmpAdress);