- 当输入框(包括下拉框,单选和多选)提交数据之后,前端传到后端,控制器验证数据,不符合回显数据时 ,怎么将之前的下拉框,单选和多选所做的选择一并回显?
- 方法比较多,js学的一般,所以用了老师的 jstl 标签来解决
html的代码
clist 是放到session里面的所有班级列表信息;下拉框循环显示,
在这里要注意一个特点,用el表达式取值时,空值不报错,不显示,不是空值才会取出来,所以直接用
<!-- 导入标签库 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<tr>
<td>班级:</td>
<td><select name="cid">
<c:forEach items="${clist}" var="item">
<!-- 回显取出stu的cid属性 与班级列表对比 相同则让选中 -->
<option value="${item.id}" <c:if test="${item.id == stu.cid}">selected="selected"</c:if>>${item.name}</option>
</c:forEach>
</select></td>
<!-- 回显错误信息,用el表达式去取,错误信息和回显的stu对象都可以放到request请求狱中【范围一次请求 最适合】 -->
<td style="color:red">${stuerr}</td>
- 性别单选的回显
注意 :第一个输入框的checked 是默认选择的 后面的用jstl表达式写的是回显的,如果后面有数据,会把前面的覆盖,
${stu.gender eq '男'}:注意单引号 外面双引号
<tr>
<td>性别:</td>
<td>
<input type="radio" name="gender" value="男" checked="checked" <c:if test="${stu.gender eq '男'}"> checked="checked"</c:if> >男
<input type="radio" name="gender" value="女" <c:if test="${stu.gender eq '女'}"> checked="checked"</c:if> >女
</td>
<td style="color:red">${gendererr}</td>
</tr>
- 爱好多选框的回显
${fn:contains(stu.hobbies,'篮球') }:不止导入jstl的核心标签库 还要导入函数标签库
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" name="hobbies" value="篮球" <c:if test="${fn:contains(stu.hobbies,'篮球') }"> checked="checked"</c:if>>篮球
<input type="checkbox" name="hobbies" value="足球" <c:if test="${fn:contains(stu.hobbies,'足球') }"> checked="checked"</c:if>>足球
<input type="checkbox" name="hobbies" value="网球" <c:if test="${fn:contains(stu.hobbies,'网球') }"> checked="checked"</c:if>>网球
</td>
<td style="color:red">${hobbieserr}</td>
</tr>

1254

被折叠的 条评论
为什么被折叠?



