jsp select 选择框的回显问题

  今天写的一个项目中,一个修改的小功能需要用到回显,不过以前没有写过选择框的回显,最终试了好方法,才终于成功。

 第一种:option显示的值来自后台

<select name="customer.cid">
      <c:forEach items="${listCustomer }" var="customer">
	      <!-- 当前联系人所属客户id 和所有的客户id比较,相同选中 -->
	      <option value="${customer.cid }" <c:if test="${customer.cid == link.customer.cid }">selected</c:if> >${customer.custName }</option>
      </c:forEach>
</select>

第二种:option显示的值页面上本来就有

 

<select name="dc_type">
    <option value="记过" ${discipline.dc_type=="记过"?'selected':''}>记过</option>
	<option value="警告" ${discipline.dc_type=="警告"?'selected':''}>警告</option>
	<option value="开除学籍" ${discipline.dc_type=="开除
### 什么是代码回显 代码回显是指在前端页面中,通过某种逻辑设置使 `<select>` 下拉框或其他表单控件显示特定选项的状态为选中状态。这种技术通常用于动态生成的 HTML 页面,在用户提交数据后重新加载页面时保持之前的选择状态[^1]。 --- ### 解决代码回显的方法 以下是几种常见的实现方式: #### 方法一:使用 JSP 表达式语言 (EL) 和条件判断 可以通过 `${}` 来获取后台传递的数据,并结合 `<c:if test="">` 判断当前值是否匹配目标值来设置 `selected` 属性。 ```html <select name="curStatus" value="${curStatus}"> <option value="0">-请选择-</option> <option value="1" ${'1' eq curStatus ? 'selected' : ''}>男</option> <option value="2" ${'2' eq curStatus ? 'selected' : ''}>女</option> </select> ``` 此方法利用 EL 的三元运算符简化了条件判断过程[^1]。 #### 方法二:Struts 标签库中的 `<s:select>` 如果项目基于 Struts 框架,则可以借助其内置标签 `<s:select>` 完成更简洁的功能实现。 ```html <s:select list="#{0:'--请选择--',1:'处理中',2:'已完成'}" listKey="key" listValue="value" name="curStatus" value="%{curStatus}"/> ``` 该方法无需手动编写多个 `<option>` 元素及其对应的条件语句,框架会自动完成属性绑定并渲染正确的选中项[^1]。 #### 方法三:混合使用 JSTL 和 Struts 标签 当需要兼容同场景或者复杂业务需求时,也可以将两者结合起来使用。 ```html <select name="curStatus" value="${curStatus}"> <option value="0">-请选择-</option> <option value="1" <s:if test="%{curStatus == 1}">selected</s:if>>处理中</option> <option value="2" <s:if test="%{curStatus == 2}">selected</s:if>>已处理</option> </select> ``` 这种方式适用于某些特殊情况下无法单纯依赖一种工具的情况。 --- ### 总结 无论采用哪种方案,核心思路都是依据服务器端返回的实际参数调整客户端展示效果,从而达到保存用户操作记录的目的。具体选择取决于开发环境以及团队习惯等因素影响下的权衡考量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值