10

クラスに 2 つの arraylist があり、それを JSP に送信してから、select タグで arraylist の要素を反復処理したいと考えています。

これが私のクラスです:

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

select タグのオプションとして food_Code を、JSP の Select タグの値として food_Code を繰り返したい。私のJSPは:

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

// Don't know how to iterate

</select>

どのコードも高く評価されます。前もって感謝します :)

4

5 に答える 5

17

次のように、 two の代わりにa を使用しjava.util.Mapてキーと値を格納することをお勧めします。ArrayList

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

JSP でマップを反復するには、次のようにします。

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

または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>

JSTL の反復処理について詳しく知るには、SO の適切な回答がここにあり、一般的な JSTL の使用方法に関する優れたチュートリアルがここにあります。

于 2013-05-06T11:14:06.030 に答える
4

JSTL の foreach を使用できます。

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

JSTL コアもインポートする必要があります。

<%@ taglib prefix="c" 
       uri="http://java.sun.com/jsp/jstl/core" %>
于 2013-05-06T10:55:14.817 に答える
1

次のようにJSPでリストを取得できます

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

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

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

  </c:forEach>

</select>
于 2013-05-06T11:09:11.690 に答える
0

これを行う方法は複数あります(スキームにいくつかの変更を加えます)

JSTL の使用:

  1. foodと の 2 つのフィールドを持つ Bean を作成します。food_code

    public class Food{ プライベート ストリング フード; プライベート文字列 food_code; // セッター/ゲッターが続きます }

これで、ページで使用できる arraylist がリストFoodオブジェクトになります。JSP コードでは、以下を使用できます。

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

ストラットを使用している場合:

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

listコンテキスト (ページ/セッション) からリストを取得するために使用されるオブジェクト キーを次に示します。

于 2013-05-06T11:08:59.777 に答える