我们经常会从后台传递一组数据,这一组数据需要放到一个select下拉框中,并且要判断是否要选中其中某一个值
错误的做法是
<select >
<option selected="${value.week==1?'selected' :''}>周一</option>"
<option selected="${value.week==2?'selected' :''}>周二</option>"
<option selected="${value.week==3?'selected' :''}>周三</option>"
<option selected="${value.week==4?'selected' :''}>周四</option>"
<option selected="${value.week==5?'selected' :''}>周五</option>"
</select>
通常我们以为经过EL的三元运算符的运算,得到的结果是这样的
<select >
<option selected=' '>周一</option>"
<option selected=' '>周二</option>"
<option selected='selected'>周三</option>"
<option selected=' '>周四</option>"
<option selected=' '>周五</option>"
</select>
而实际编译后也确实生成的是这样,那为什么周三还是不会选中呢???哈哈
经过反复测验后得出一个结论就是
如果在一个下拉框中,有某个选项将要被选中,那么其他选项的select属性就不能有值
当我们在MyEclipse中写上这样一段
系统会有立马警告
而部署后2选项也同样不会被选中,也证明了我们的结论
那么要怎样用三元运算符来设置下拉框的选项是否选中呢?
如图
也就是
<select name="week" style="display: none" class="updateInfo">
<option>-请选择-</option>
<option ${courseMap.week == 0 ? "selected= 'selected'" : " "} value="0"> 周 日 </option>
<option ${courseMap.week == 1 ? "selected= 'selected'" : " "} value="1"> 星期一 </option>
<option ${courseMap.week == 2 ? "selected= 'selected'" : " "} value="2"> 星期二 </option>
<option ${courseMap.week == 3 ? "selected= 'selected'" : " "} value="3"> 星期三 </option>
<option ${courseMap.week == 4 ? "selected= 'selected'" : " "} value="4"> 星期四 </option>
<option ${courseMap.week == 5 ? "selected= 'selected'" : " "} value="5"> 星期五 </option>
<option ${courseMap.week == 6 ? "selected= 'selected'" : " "} value="6"> 星期六 </option>
</select>
如果条件成立才会有selected='selected'不然只是一个空格,不知道您看懂了么???
琢磨了半天才想明白,作为一个笔记吧!