2014-07-01 71 views
0

我有這個片JSP與EL:迭代通過的ArrayList用JSP EL

  <div> 
       <label class="label">Klant</label> 
       <select name="klant" id="klant"> 
        <option value="nieuweKlant">Nieuwe Klant</option> 
        <c:forEach items="${werkplaats.alleKlanten}" var="current"> 
         <option> 
          <c:out value="${current.voornaam}" /> 
         </option> 
        </c:forEach> 
       </select> 
      </div> 

werkplaatsServletContext屬性包含類Werkplaats的一個實例。 Werkplaats包含一個ArrayList<Klant> alleKlanten,其中包含幾個Klant對象。 Klant具有屬性voornaam和方法getVoornaam()但是當我查看JSP它興田下拉未填寫,它只是有Nieuwe Klant和空​​3210我所期待的,並希望與<option>'Klant voornaam'</option>每個Klant下拉。

Werkplaats:

public class Werkplaats implements Serializable { 
private ArrayList<Klant> alleKlanten = new ArrayList<Klant>(); 


public Klant zoekKlant(String voornaam, String tussenvoegsel, String achternaam) { 
    Klant klant = null; 
    for (Klant k : alleKlanten) { 
     if (k.getAchternaam().equals(achternaam) && k.getVoornaam().equals(voornaam) && k.getTussenvoegsel().equals(tussenvoegsel)) { 
      klant = k; 
     } 
    } 
    return klant; 
} 

public boolean verwijderKlant(String voornaam, String ussenvoegsel, String achternaam) { 
    boolean verwijdert = false; 

    if (zoekKlant(voornaam, ussenvoegsel, achternaam) != null) { 
     alleKlanten.remove(zoekKlant(voornaam, ussenvoegsel, achternaam)); 
     verwijdert = true; 
    } 
    return verwijdert; 
} 

public boolean voegKlantToe(Klant klant) { 
    boolean toegevoegd = false; 

    if (zoekKlant(klant.getVoornaam(), klant.getTussenvoegsel(), klant.getAchternaam()) == null) { 
     alleKlanten.add(klant); 
     toegevoegd = true; 
    } 

    return toegevoegd; 
} 

public ArrayList<Klant> getAlleKlanten() { 
    return alleKlanten; 
} 

}

Klant:

public class Klant implements Serializable, Persoon { 
    private String voornaam, tussenvoegsel, achternaam; 


public Klant(String voornaam, String tussenvoegsel, String achternaam) { 
    setVoornaam(voornaam); 
    setTussenvoegsel(tussenvoegsel); 
    setAchternaam(achternaam); 

} 


public String getVoornaam() { 
    return voornaam; 
} 

public void setVoornaam(String naam) { 
    this.voornaam = naam; 
} 

public String getTussenvoegsel() { 
    return tussenvoegsel; 
} 

public void setTussenvoegsel(String tussenvoegsel) { 
    this.tussenvoegsel = tussenvoegsel; 
} 

public String getAchternaam() { 
    return achternaam; 
} 

public void setAchternaam(String achternaam) { 
    this.achternaam = achternaam; 
} 

public String getVolledigeNaam() { 
    return getVoornaam() + " " + getTussenvoegsel() + " " + getAchternaam(); 
} 

}

其中泰德ArrayList的填充監聽器:

public class MyServletContextListener implements ServletContextListener { 
    public void contextInitialized(ServletContextEvent arg0) { 

    Werkplaats werkplaats = new Werkplaats(); 

    // Dummy Data 
    Auto auto1 = new Auto("Peugeot", "506", "NH-56-KJ", 2001); 
    Auto auto2 = new Auto("BMW", "M5", "GHJ-23-K", 2013); 
    Auto auto3 = new Auto("Mazda", "626", "ODX-1-00", 1999); 
    Auto auto4 = new Auto("Nissan", "GTR", "81-PVJ-1", 2012); 
    Auto auto5 = new Auto("Suzuki", "Swift", "1-KBB-00", 2011); 

    Adres adres1 = new Adres("Houtstraat", 1, "", "1521GH", "Utrecht"); 
    Adres adres2 = new Adres("Pinkstraat", 15, "", "1541HC", "Koog aan de Zaan"); 
    Adres adres3 = new Adres("Verschuurstraat", 21, "", "7891OP", "Hilversum"); 
    Adres adres4 = new Adres("Bakkerstraat", 67, "", "4652AL", "Hilversum"); 
    Adres adres5 = new Adres("Houtstraat", 1, "a", "1658FG", "Utrecht"); 

    Calendar gd1 = Calendar.getInstance(); 
    Calendar gd2 = Calendar.getInstance(); 
    Calendar gd3 = Calendar.getInstance(); 
    Calendar gd4 = Calendar.getInstance(); 
    Calendar gd5 = Calendar.getInstance(); 

    gd1.set(1973, 1, 1); 
    gd2.set(1994, 9, 3); 
    gd3.set(1993, 9, 21); 
    gd4.set(1993, 1, 15); 
    gd5.set(1973, 1, 1); 

    Klant klant1 = new Klant("Henk", "", "Sjaak", gd1, adres1); 
    Klant klant2 = new Klant("Liam", "de", "Haas", gd2, adres2); 
    Klant klant3 = new Klant("Nathan", "van", "Nispen", gd3, adres3); 
    Klant klant4 = new Klant("Frits", "", "Budding", gd4, adres4); 
    Klant klant5 = new Klant("Jasper", "is de", "Sjaak", gd5, adres5); 

    klant1.voegAutoToe(auto1); 
    klant2.voegAutoToe(auto2); 
    klant3.voegAutoToe(auto3); 
    klant4.voegAutoToe(auto4); 
    klant5.voegAutoToe(auto5); 

    werkplaats.voegKlantToe(klant1); 
    werkplaats.voegKlantToe(klant2); 
    werkplaats.voegKlantToe(klant3); 
    werkplaats.voegKlantToe(klant4); 
    werkplaats.voegKlantToe(klant5); 

    ServletContext sc = arg0.getServletContext(); 

    synchronized (sc) { 
     sc.setAttribute("werkplaats", werkplaats); 
    } 
} 

}

+0

alleKlanten包含些什麼呢? –

+0

是的,它在「ServletContextListener」中填充時 –

+0

@MarcoAcierno添加了監聽器 –

回答

0

忘了加上JSTL的lib

在JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

,並把實際的罐子在war/WEB-INF/lib文件夾