繁体   English   中英

加载页面时,如何首次在JSP上始终显示下拉列表的第一个值?

[英]How to show the first value of dropdown list always on JSP for the first time when page is loaded?

我正在JSP页面上工作,并且需要始终在该JSP页面上显示下拉列表的选定值。 以下是我的示例-

<p style="font-weight: bold">Limit</p>
<select id="limit" name="limit">
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="50">50</option>
    <option value="100">100</option>
</select>

第一次加载页面时,我想显示从上面的下拉列表中选择的10个值。 现在,如果我从上面的下拉列表中选择20并提交表单,则需要通过始终保持下拉列表的状态在该下拉列表上显示20,因此我在下面的代码中使用了该代码-

<%
String limit = request.getParameter("limit");
%>
<script>
document.getElementById("limit").value = '<% out.print(limit); %>';
</script>

但是以某种方式,每当我第一次加载页面时,我总是会在“ Limit下拉框的前面看到空白字段,然后,如果我从该下拉列表中选择20 ,然后再次提交表单,那么我可以看到在该下拉列表中20 selected20 selected如果我选择50,然后再次提交表单,那么我也可以在下拉列表中看到50。

唯一的问题是第一次加载页面时,它总是在下拉列表中显示空白字段作为选定值,这不是我想要的值,每当第一次加载页面时,我都希望第一次自动选择10 。

第一页加载未设置请求参数。 一个简单的解决方案可能是:

<%
String limit = request.getParameter("limit");
if (limit == null) {
    limit = "10";
}
%>

您可以在<script>周围添加一个条件:

<% if (limit != null) { %>
...
<% } %>

或者,您也可以使用jquery(在javascript中,这通常是一个不错的选择),它选择<option>方法不会产生这种效果。

您的代码中没有“默认”分配,因此您的值分配是将limit值分配给下拉列表, limit值在首次加载页面时为null。 听起来这会导致空白选项。

您有两个选择。 第一个:如果现有值之一应为默认值,则将其分配给limit如果没有值):

<%
String limit = request.getParameter("limit");
limit = (limit == null) ? DEFAULT_VALUE : limit;
%>

或者,如果现有值之一不适合默认值,则应在选项列表中提供一个空的替代值:

<select id="limit" name="limit">
    <option value="">-- SELECT ONE --</option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="50">50</option>
    <option value="100">100</option>
</select>

希望这可以帮助。

请注意:通过将limit的值插值到页面中,您违反了网络安全性的主要规则:切勿在未取消保留用户输入的情况下在页面上回显用户输入。 考虑如果将script标签作为limit的值会发生什么情况...

使用javascript很酷,但是您可以使用HTML功能实现选择, 请参见http://www.w3schools.com/tags/tag_option.asp<option selected ...>描述

因此,您的JSP可以被重写:

<select id="limit" name="limit">
<option value="10" selected>10</option>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM