29

JSPにドロップダウン値を入力するためにサーブレットにSortedMapがあり、次のコードがあります

    SortedMap<String, String> dept = findDepartment();
    request.setAttribute("dept ", dept);

およびJSPで

       <select name="department">
          <c:forEach var="item" items="${dept}">
            <option value="${item.key}">${item.value}</option>
          </c:forEach>
        </select>

挿入と更新に1つのJSPページを使用しています。ページを編集しているときに、選択した値をデータベースから取得する場所にドロップダウンするように設定するにはどうすればよいですか。

4

8 に答える 8

52

HTMLでは、選択されたオプションは、次のように要素selected上の属性の存在によって表されます。<option>

<option ... selected>...</option>

または、HTML / XHTMLに厳密な場合:

<option ... selected="selected">...</option>

したがって、JSP/ELに条件付きで印刷させる必要があります。選択した部門を次のように準備した場合:

request.setAttribute("selectedDept", selectedDept);

その後、これは行う必要があります:

<select name="department">
    <c:forEach var="item" items="${dept}">
        <option value="${item.key}" ${item.key == selectedDept ? 'selected="selected"' : ''}>${item.value}</option>
    </c:forEach>
</select>

参照:

于 2013-03-27T11:12:15.453 に答える
7

Sandeep Kumarからの最後の回答を試しましたが、もっと簡単でした。

<option value="1" <c:if test="${item.key == 1}"> selected </c:if>>
于 2017-02-27T06:14:42.387 に答える
3

jQueryを使用してもかまわない場合は、次のコードを使用できます。

    <script>
     $(document).ready(function(){
           $("#department").val("${requestScope.selectedDepartment}").attr('selected', 'selected');
     });
     </script>


    <select id="department" name="department">
      <c:forEach var="item" items="${dept}">
        <option value="${item.key}">${item.value}</option>
      </c:forEach>
    </select>

サーブレットに以下を追加します。

        request.setAttribute("selectedDepartment", YOUR_SELECTED_DEPARTMENT );
于 2013-03-27T11:17:51.987 に答える
3

上記の例は正しいと思います。しかし、あなたは本当に設定する必要はありません

request.setAttribute("selectedDept", selectedDept);

JSTLからの情報を再利用できます。次のようにしてください。

<!DOCTYPE html>
<html lang="en">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<head>
    <script src="../js/jquery-1.8.1.min.js"></script>
</head>
<body>
    <c:set var="authors" value="aaa,bbb,ccc,ddd,eee,fff,ggg" scope="application" />
    <c:out value="Before : ${param.Author}"/>
    <form action="TestSelect.action">
        <label>Author
            <select id="Author" name="Author">
                <c:forEach items="${fn:split(authors, ',')}" var="author">
                    <option value="${author}" ${author == param.Author ? 'selected' : ''}>${author}</option>
                </c:forEach>
            </select>
        </label>
        <button type="submit" value="submit" name="Submit"></button>
        <Br>
        <c:out value="After :   ${param.Author}"/>
    </form>
</body>
</html>
于 2013-09-16T21:51:35.590 に答える
2

受け入れられた答えを試しましたが、うまくいきませんでした。

ただし、それを行う簡単な方法は次のとおりです。-

<option value="1" <c:if test="${item.quantity == 1}"> <c:out value= "selected=selected"/</c:if>>1</option>
<option value="2" <c:if test="${item.quantity == 2}"> <c:out value= "selected=selected"/</c:if>>2</option>
<option value="3" <c:if test="${item.quantity == 3}"> <c:out value= "selected=selected"/</c:if>>3</option>

楽しみ!!

于 2015-01-12T09:39:26.893 に答える
2

さらに簡単なものを試すことができます:

<option value="1" ${item.quantity == 1 ? "selected" : ""}>1</option>
于 2017-06-15T13:46:17.867 に答える
1

受け入れられた答えを完全に理解していないので、うまくいきませんでした。

私がしたことは、変数がnullであるかどうかを確認し、データベースの既知の値に割り当てることでした。これは、最初に既知の値を宣言し、それを選択済みに設定するという、受け入れられた回答に似ているようです。

<select name="department">
    <c:forEach var="item" items="${dept}">
        <option value="${item.key}">${item.value}</option>
    </c:forEach>
</select>

どのオプションも選択されていないため、item = null

<%
    if(item == null){
        item = "selectedDept"; //known value from your database
    }
%>

このように、ユーザーが別のオプションを選択した場合、私のIF句はそれをキャッチせず、最初に宣言された固定値に割り当てます。私の概念はここでは間違っている可能性がありますが、それは私にとってはうまくいきます

于 2017-07-13T08:10:49.520 に答える
0

以下は、jstlタグを使用した単純なドロップダウンの例です。

 <form:select path="cityFrom">  
    <form:option value="Ghaziabad" label="Ghaziabad"/>  
    <form:option value="Modinagar" label="Modinagar"/>  
    <form:option value="Meerut" label="Meerut"/>  
    <form:option value="Amristar" label="Amristar"/>  
 </form:select>
于 2021-01-01T10:09:44.077 に答える