![](/img/trans.png)
[英]Spring url not resolving correctly first time jsp page is loaded, works correctly after first hit
[英]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 selected
了20 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.