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

    在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"

这样再次查询刷新页面后,文本框的值将会保留选择的条件!



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值