<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的形式,让我活活搞了一天,我真的快吐血了……
溜了溜了