在我找到的许多解决方案中,我似乎无法让其中任何一个为我工作。我的jsp文件中有一个下拉列表:
<select name="chosenOne" onchange="javascript:getUsers(this.value);">
<option value="0" onclick="javascript:getUsers(this.value);">All Modules</option>
<c:forEach items="${modules}" var="module">
<option value="${module.id}"><c:out value="${module.title}"/></option>
</c:forEach>
</select></p>
它从我的数据库动态填充,但“所有模块”选项除外。这是我的onchange事件的javascript函数:
<script type="text/javascript">
function getUsers(id) {
if (id != "0"){
document.updateForm.id.value = id;
}
else{
document.updateForm.id.value = "0";
}
document.updateForm.submit();
}</script>
这是我的Servlet代码,其中涉及下拉框:
protected void process(final HttpServletRequest request, final HttpServletResponse response)
throws ServletException, IOException {
long modID = 0;
String url = "jsp/user/administration.jsp";
request.setAttribute("modules", dataAccessor.getAllModules());
if (isParameterValid(request.getParameter("id"))) {
modID = Long.parseLong(request.getParameter("id"));
request.setAttribute("users", getUsersFromModule(modID));
System.out.println(modID);
} else if (!isParameterValid(request.getParameter("id"))) {
request.setAttribute("users", dataAccessor.getAllUsers());
} else {
request.setAttribute("errorMessage", "There was a problem retrieving users!");
url = "jsp/error.jsp";
}
//request.setAttribute("formerSelect", modID);
request.getRequestDispatcher(url).forward(request, response);
}
那么,如何在表单刷新后如何使选定的下拉值保留在下拉框中?我一直在设置属性“ formerSelect”,其中只包含下拉菜单中先前选择的项目的值。但是由于某种原因,当我尝试将其下拉列表分配给我的options标签中的“ selected”值时,它使我的下拉列表变得无用。任何帮助深表感谢。
提交后,您需要将此参数传递给httpRequest:
request.setAttribute("selectedModule", request.getParameter("chosenOne"));
之后,您需要将一个选项标记为选中:
<c:forEach items="${modules}" var="module">
<option value="${module.id}" ${module.id == selectedModule ? 'selected':''}>...</option>
</c:forEach>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句