el和jstl表达式问题==0的问题
出现问题的地方
<c:if test="${paramMap['_query.issend']=='0'}"> selected="selected" </c:if>
后台默认会把name="_query.issend"中的 _query.issend作为key保存到作用域中,然后返回的时候作为回显使用。
第一次点击查询的时候,数据正常,我们的这里选择的是没有只的第一个option,
点击一次查询后,这里的备选项就会变了,变成第二个了,也就是 value="0" 的这个选项,我们什么都没有操作。只是点击查询
不知道为什么,
猜测:可能是我们系的if语句中 paramMap['_query.issend'] 这个第一次就是空值 "", 我们这里等于的时候使用的是 ==0 他给认为是 "" 就是0 了, 不知道对不对? 完全猜测。
${paramMap['_query.issend']==0}
所以可能认为这个就是 true 了,就会改变备选项了。
解决方式: 把 ==0 这样的方式改为 =='0' 改为等于字符串的形式,这样,我测试的结果就没有问题了。
原来的样式:
<div class="report-update-list-search"> <label>${_res.get("admin.dict.property.status")}:${paramMap['_query.issend']}</label> <select id="" name="_query.issend" class="chosen-select" style="width:120px"> <option value="" >${_res.get('system.alloptions')}</option> <option value="0" <c:if test="${paramMap['_query.issend']==0}"> selected="selected" </c:if>>${_res.get('Unsent')}</option> <option value="1" <c:if test="${paramMap['_query.issend']==1}"> selected="selected" </c:if> >${_res.get('Has_been_sent')}</option> <option value="2" <c:if test="${paramMap['_query.issend']==2}"> selected="selected" </c:if>>${_res.get('Is_the_translation')}</option> </select> </div>
改变后结果显示没有问题的样式
<div class="report-update-list-search"> <label>${_res.get("admin.dict.property.status")}:${paramMap['_query.issend']}</label> <select id="" name="_query.issend" class="chosen-select" style="width:120px"> <option value="" >${_res.get('system.alloptions')}</option> <option value="0" <c:if test="${paramMap['_query.issend']=='0'}"> selected="selected" </c:if>>${_res.get('Unsent')}</option> <option value="1" <c:if test="${paramMap['_query.issend']=='1'}"> selected="selected" </c:if> >${_res.get('Has_been_sent')}</option> <option value="2" <c:if test="${paramMap['_query.issend']=='2'}"> selected="selected" </c:if>>${_res.get('Is_the_translation')}</option> </select> </div>