<select name="books" id="sel" class="form-control selectpicker" data-live-search="true" multiple="multiple"> <c:forEach items="${map }" var="m"> <optgroup label="${m.key }"> <c:forEach items="${m.value }" var="book"> <c:set var="flag" value="true"></c:set> <c:forEach items="${channel.books }" var="b"> <c:if test="${b.category2.name==m.key }"> <c:if test="${book.name==b.name }"> <c:set var="flag" value="false"></c:set> <option value="${book }" selected="selected">${book.name}</option> </c:if> </c:if> </c:forEach> <c:if test="${flag }"> <option value="${book }">${book.name}</option> </c:if> </c:forEach> </optgroup> </c:forEach> </select>
我做的是一个多选下拉框,当编辑该页面时,已有的数据要选中。
部分截图
后端的话这么写
for(int i = 0; i < 10; i++) { boolean flag = true; for(int j = 0; j < 10; j++) { if(i == j) { flag = false; ... } } if(flag) { ... } }
jstl这样
<c:forEach items="${m.value }" var="book"> <c:set var="flag" value="true"></c:set> <c:forEach items="${channel.books }" var="b"> <c:if test="${b.category2.name==m.key }"> <c:if test="${book.name==b.name }"> <c:set var="flag" value="false"></c:set> <option value="${book }" selected="selected">${book.name}</option> </c:if> </c:if> </c:forEach> <c:if test="${flag }"> <option value="${book }">${book.name}</option> </c:if> </c:forEach>差不多就这样了。
这个问题我在后端做过好几次,换到前端以jstl的形式,让我活活搞了一天,我真的快吐血了……
溜了溜了