【发布时间】:2009-08-04 02:10:20
【问题描述】:
假设我有一个包含下拉列表的 jsp 页面。 当用户选择一个项目并单击提交以将 JSP 页面提交给自己时, 之后,JSP 页面将重新加载,之前选择的项目将被取消选择。 即使在重新加载 JSP 页面后,我怎样才能使它不改变?
【问题讨论】:
标签: jsp drop-down-menu reload
假设我有一个包含下拉列表的 jsp 页面。 当用户选择一个项目并单击提交以将 JSP 页面提交给自己时, 之后,JSP 页面将重新加载,之前选择的项目将被取消选择。 即使在重新加载 JSP 页面后,我怎样才能使它不改变?
【问题讨论】:
标签: jsp drop-down-menu reload
您必须重新选择它。
所以它最终会是这样的:
<select name="dropdown">
<%
String selectedItem = request.getParameter("dropdown");
for( String item : values ) {
%>
<option <%=item.equals(selectedItem)?selected:""%>><%=item%>
<%
}
%>
这样,每次重新加载 jsp 页面时,都会验证当前正在绘制的项目是否与用户先前选择的项目相同。如果是这样,您将“选择”附加到选项(第一次它不会匹配任何内容)
我对 JSP 有点生疏,所以,可能有一种更“优雅”的方式来做,但这种“旧式”确实有效。
希望对你有帮助。
【讨论】:
设置传入表单的option 的selected 属性...您的输出应如下所示(假设用户选择了“Saab”):
<select>
<option>Volvo</option>
<option selected="selected">Saab</option>
<option>Mercedes</option>
<option>Audi</option>
</select>
【讨论】:
select 元素应该在表单中并且有一个 id(在示例中没有),当页面 POST 回 JSP 时,id 和所选 option 元素的值将被传递给表单。当您迭代元素以输出表单时,您需要测试每个选项的值是否等于传递给 POST 的值。
我觉得这个方法比较好:
<script type = "text/javascript"/>
<%String selectedItem ;
if(request.getAttribute("dropdown") != null){
selected= request.getAttribute("dropdown");%>
document.getElementById("selectbox").selectedIndex = selectedItem;
<%}%>
</script>
我认为这种方法会奏效。
【讨论】: