如何在同一jsp页面的下拉列表中保留所选值?
我希望在提交表单后,由于某种原因再次转发到同一页面,下拉列表中的选定选项应保留我第一次输入的选定值如何在同一jsp页面的下拉列表中保留所选值?,jsp,servlets,drop-down-menu,Jsp,Servlets,Drop Down Menu,我希望在提交表单后,由于某种原因再次转发到同一页面,下拉列表中的选定选项应保留我第一次输入的选定值 <form action="CitySelection" method="POST"> <select name="cityname" id="myselect" onchange="this.form.submit()"> <option value="england">england</option>
<form action="CitySelection" method="POST">
<select name="cityname" id="myselect" onchange="this.form.submit()">
<option value="england">england</option>
<option value="france">france</option>
<option value="spain">spain</option>
</select>
</form>
英格兰
法国
西班牙
如何使用此功能增强上述表单代码,有什么建议吗?为什么要将硬编码城市列表放在选择菜单中?要做到这一点,使用
c taglib
,jsp页面应该像下面这样:
<%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/core" %>
<form action="<SUBMITTING_URL>" method="post">
<select name="cityname" id="myselect" onchange="this.form.submit()">
<c:foreach var="cityname" items="${cityList}">
<c:choose>
<c:when test="${not empty selectedCity && selectedCity eq cityname}">
<option value="${cityname}" selected = "true">${cityname}</option>
</c:when>
<c:otherwise>
<option value="${cityname}">${cityname}</option>
</c:otherwise>
</c:choose>
</c:foreach>
</select>
</form>
您的doGet方法应该如下所示:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String cityName = request.getParameter("cityname"); //retrieving value from post request.
//do your necessary coding.
if(validation error or as your wish){
List<String> cityList = new ArrayList<String>();
cityList.add("england");
cityList.add("france");
cityList.add("spain");
request.setAttribute("cityList",cityList);
request.setAttribute("selectedCity",cityName);
RequestDispatcher dispatcher = request.getRequestDispatcher("cityform.jsp");
dispatcher.forward(request, response);
} else {
//do other things
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<String> cityList = new ArrayList<String>();
cityList.add("england");
cityList.add("france");
cityList.add("spain");
request.setAttribute("cityList",cityList);
request.setAttribute("selectedCity",null);
RequestDispatcher dispatcher = request.getRequestDispatcher("cityform.jsp");
dispatcher.forward(request, response);
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
List cityList=new ArrayList();
城市列表添加(“英格兰”);
城市列表添加(“法国”);
城市列表添加(“西班牙”);
setAttribute(“cityList”,cityList);
request.setAttribute(“selectedCity”,null);
RequestDispatcher=request.getRequestDispatcher(“cityform.jsp”);
转发(请求、响应);
}
现在,当您想再次进入页面时,您将看到所选的值,您已经选择了 “保留”这个词是什么意思?您能否清楚地解释一下您正在尝试做什么以及您面临的问题是什么?例如,如果用户在下拉列表中选择“西班牙”,则将提交表单,然后执行操作,然后在jsp文件上显示一些结果,现在,如果我们看到下拉列表,将选择“英格兰”,但我希望选择“西班牙”,因为用户选择了“西班牙”。