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