您的位置:首页 > 运维架构

关于Select option默认选中及查询后选项值保留的问题

2014-10-18 07:54 2361 查看
在jsp页面中经常会有关于下拉框选项的查询,一般我会用<c:forEach></c:forEach>标签去循环从后台传来的对象或者集合数组。然后在下拉框中加载出数据库中的数据。一般的格式是这样的:

<select class="percentText" id="operatorId" name="operatorId">

<option value="">--Select All--</option>

<c:forEach items="${operators }" var="oper" varStatus="step">

<option value = "${oper.operatorId }" ${oper.operatorName }</option>

</c:forEach>

</select>

其中<select></select>标签中的第一个<option></option>是要在文本框中显示的(如果没有设置默认选项的话)

那么这就牵涉到一个小问题了,如何设置默认选项?

一般情况会是在写死的<select></select>中使用,也就是说<select></select>中的数据不是从数据库中加载出来的,而是直接写死在jsp里面的,比如:

<select class="percentText" id="operatorId" name="operatorId">

<option value="">请选择</option>

<option value="1">宝马</option>
<option value="2">奔驰</option>
<option value="3">奥迪</option>

</select>

如果是这样的话,文本框中依然是"请选择"(即第一个<option></option>),如果想让文本框中默认为“宝马”,则需要在<option
value="1">宝马</option>中加上selected = "selected"即<option value="1"
selected = "selected">宝马</option>。

还是回到我原来的问题,首先补充说明一下我第一段代码的意思,operators是我从控制器(controller、action)中传过来的对象集合,用${operators }来获取。var="oper"是要在option中来调用这个对象的属性。

其中的问题就是,当我选择其中一个值然后查询会刷新出来一个页面,但是select文本框中的值又变回--Select All--,没有保留原来的值,这就给用户不好的体验,这种情况会导致用户可能忘记根据哪个条件来查询的了。所以必须点击刷新显示列表页面是保留select的值。

用上面的selected="seleced"肯定是行不通的

那么这就要结合<select></select>的name属性以及<option></option>的value值了

在<option></option>中加上${oper.operatorId
== param['operatorId']?'selected':''}即:


<option value = "${oper.operatorId
}" ${oper.operatorId == param['operatorId']?'selected':''}>${oper.operatorName }</option>


其中oper.operatorId 是来自<option value
= "${oper.operatorId }">,
param['operatorId']中的operatorId是来自<select
name="operatorId"


这样再次查询刷新页面后,文本框的值将会保留选择的条件!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐