it-swarm.com.de

Iterate ArrayList in JSP

Ich habe zwei Arraylisten in meiner Klasse, und ich möchte sie an meine JSP senden und dann die Elemente in Arraylist in einem select-Tag wiederholen.

Hier ist meine Klasse:

package accessData;

import Java.util.ArrayList;

public class ConnectingDatabase 
{
   ArrayList<String> food=new ArrayList<String>();
   food.add("mango");
   food.add("Apple");
   food.add("grapes");

   ArrayList<String> food_Code=new ArrayList<String>();
   food.add("man");
   food.add("app");
   food.add("gra");
}

Ich möchte food_Code als Optionen in select-Tag und food als Werte in select-Tag in JSP durchlaufen. meine JSP ist:

<select id="food" name="fooditems">

// Don't know how to iterate

</select>

Jeder Code wird sehr geschätzt. Danke im Voraus :)

9
Anish Sharma

Es ist besser, einen Java.util.Map zu verwenden, um den Schlüssel und die Werte anstelle von zwei ArrayList zu speichern, wie:

Map<String, String> foods = new HashMap<String, String>();

// here key stores the food codes
// and values are that which will be visible to the user in the drop-down
foods.put("man", "mango");
foods.put("app", "Apple");
foods.put("gra", "grapes");

// if this is your servlet or action class having access to HttpRequest object then
httpRequest.setAttribute("foods", foods); // so that you can retrieve in JSP

Um nun die Karte in der JSP zu wiederholen, verwenden Sie:

<select id="food" name="fooditems">
    <c:forEach items="${foods}" var="food">
        <option value="${food.key}">
            ${food.value}
        </option>
    </c:forEach>
</select>

Oder ohne JSTL:

<select id="food" name="fooditems">

<%
Map<String, String> foods = (Map<String, String>) request.getAttribute("foods");

for(Entry<String, String> food : foods.entrySet()) {
%>

    <option value="<%=food.getKey()%>">
        <%=food.getValue() %>
    </option>

<%
}
%>

</select>

Um mehr über das Iterieren mit JSTL zu erfahren, finden Sie hier eine gute SO Antwort und hier ein gutes Tutorial über die Verwendung von JSTL im Allgemeinen.

16
Prakash K

Sie können JSTLs foreach verwenden. 

<c:forEach items="${foodItems}" var="item">
   ${item}
</c:forEach>

Sie müssen auch den JSTL-Kern importieren: 

<%@ taglib prefix="c" 
       uri="http://Java.Sun.com/jsp/jstl/core" %>
3
Michal Borek
<c:forEach items="${list}" var="foodItem">
 ${foodItem.propertyOfBean}
</c:forEach>

Dies löst Ihr Problem.

3

Es gibt mehrere Möglichkeiten, dies zu tun (mit einigen Änderungen in Ihrem Schema).

Verwendung von JSTL:  

  1. Erstellen Sie eine Bean mit zwei Feldern als food und food_code.

    öffentliche Klasse Essen { private Saitenfutter; private Zeichenfolge food_code; // Setter/Getter folgt }

Jetzt ist die auf der Seite verfügbare Arrayliste die Liste Food Objekte. Im JSP-Code können Sie Folgendes verwenden:

<select name="fooditems">
    <c:forEach items="${list}" var="item">
        <option value="${item.food_code}">${item.food}</option>
    </c:forEach>
</select>

Wenn Sie Streben verwenden:

<html:select property="fooditems" >
<html:optionsCollection property="list" label="food" value="food_code" />
</html:select>

Hier ist list ein Objektschlüssel, mit dem die Liste aus dem Kontext (Seite/Sitzung) abgerufen wird.

0
Santosh

Sie können die Liste in JSP als abrufen

<select id="food" name="fooditems">

  <c:forEach items="${listname}" var="food" >

     <option value="${food}"> ${food} </option>

  </c:forEach>

</select>
0
venky