2016-04-08 8 views
0

ich eine Liste von Objekten drucken möchten, die mit dem Freemarker Sprache ein anderes Objekt enthältFreemarker: Liste von Objekten, die ein anderes Objekt enthält

Zum Beispiel habe ich ein Java-Objekt haben:

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

und andere Java Objekt:

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

Nachdem ich eine Liste mit den Daten meiner BDD erstellen:

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(); 
} 

In einer anderen Datei, die ich die Liste an den html senden:

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

Und in meinem html Ich habe:

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

Als ich an meinem HTML in meinem Browser sehen gibt es nur die Zahl von Raum, der aber nicht die Adresse druckt, aber wenn ich einen Unterbrechungspunkt mache, bevor ich die Liste zum HTML schicken, gibt es Adresse innerhalb.

Also wie kann ich auf die Adresse des Hauses zugreifen?

+0

Haben Sie 'getAdressHouse()' oder 'getAdress()' in Ihrem 'House' Klasse? – ericbn

+0

Ja, ich habe es, aber ich schreibe es nicht: Ich habe alle Getter und Setter – Kvasir

+0

Haben Sie versucht, $ {houseTmp.adress.street! ''} ''? – ericbn

Antwort

1

Sie haben eine private Adress _adressHouse; in Ihrer House Klasse.

Freemarker wird nicht auf das, aber auf den öffentlichen Getter haben Sie vielleicht.

Wenn Sie getAdressHouse() haben, verwenden Sie ${houseTmp.adressHouse.street!''}. Wenn Sie getAdress() haben, verwenden Sie ${houseTmp.adress.street!''}.

Ich vermute, es der zweite Fall ist, wie Sie tmpHouse.setAdress(tmpAdress); erklärt

+0

Danke für diese Erklärung, ich wusste das nicht ... aber es funktioniert immer noch nicht – Kvasir

+0

Aber Ihr Kommentar hilft mir, meinen Fehler zu verstehen. Vielen Dank. – Kvasir

Verwandte Themen