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

时间:2013-12-13 18:21:29

标签: java javascript html jsp drop-down-menu

我正在处理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 selected,如果我选择50,然后再次提交表单,那么我还可以在该下拉列表中看到50个。

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以在<script>附近添加条件:

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

或者你可以使用jquery(它几乎总是javascript的一个好选项),它选择<option>的方法不会产生这种效果。

答案 2 :(得分:1)

您的代码中没有“默认”赋值,因此您的值赋值是将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 ...

的值,会发生什么

答案 3 :(得分:1)

使用javascript很酷,但您可以使用HTML功能进行选择,查看http://www.w3schools.com/tags/tag_option.asp<option selected ...>的说明

所以你的JSP可以被重写:

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