简体   繁体   中英

Iterating through ArrayList with JSP EL

I have this piece of JSP with 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>

werkplaats is a ServletContext attribute that contains an instance of the class Werkplaats . Werkplaats contains an ArrayList<Klant> alleKlanten which holds several Klant objects. Klant has the attribute voornaam and the method getVoornaam() but when I view the JSP it hte dropdown isn't filled, it just had the Nieuwe Klant and an empty <option></option> what I expected and want is a dropdown with <option>'Klant voornaam'</option> for each 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();
}

}

the Listener where thet ArrayList is filled:

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

}

Forgot to add the JSTL lib

in the JSP:

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

and put the actual jars in the war/WEB-INF/lib folder

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM