对于JSP选定值下拉使用JSTL(Selected value for JSP drop down

2019-07-28 06:23发布

我的SortedMap在Servlet来填充下拉在JSP的价值观和我有以下代码

    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>

我使用一个JSP页面插入和更新。 当我编辑的网页我怎么能集中选择值下拉在选择时值将来自数据库。

Answer 1:

在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>

也可以看看:

  • 我怎样才能保留JSP HTML表单字段值提交表单Servlet的后?


Answer 2:

我试图从桑迪普·库马尔最后的答案,而且我发现的方式更为简单:

<option value="1" <c:if test="${item.key == 1}"> selected </c:if>>


Answer 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>

在你的servlet添加以下内容:

        request.setAttribute("selectedDepartment", YOUR_SELECTED_DEPARTMENT );


Answer 4:

我想上面的例子是正确的。 但你不要”真的需要设置

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>


Answer 5:

我试图接受的答案,也没有工作。

然而,简单的方法来做到这一点是如下: -

<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>

请享用!!



Answer 6:

你可以尝试一个更简单:

<option value="1" ${item.quantity == 1 ? "selected" : ""}>1</option>


Answer 7:

也许我没有完全理解接受的答案,因此并没有为我工作。

我所做的只是要检查,如果变量为空,将其分配给从我的数据库中的已知值。 这似乎是类似于接受的答案,让你先声明一个已知值并将其设置为选择

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

因为没有一个选项被选择,从而项=空

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

这样,如果用户随后选择另一种选择,我的IF子句不会赶上它,并分配给处于起步声明的固定值。 我的概念可能是错在这里,但它为我工作



文章来源: Selected value for JSP drop down using JSTL