在使用JSTL时的一个技巧

动态javaWeb常常需要和后台交互的,作为新手,目前发现的想前台传值有两种方法。

使用Model或者ModelAndView方法

这种传值在jsp页面上是直接可以拿到值进行互动的,缺陷是多次互动不如加载js

方便,只适合进行第一次

使用ajax进行页面互动,再将值传入jsp页面

这种传值方式在多次交互时很方便,但是当数据多的时候,我们就要进行一些拼字符串处理,而且页面的样式也是不好加。

foreach在标签中使用:

最近碰见了一个问题,是在使用Model进行传值时,对复选框进行匹配,使用两个<c:foreach>进行匹配,
刚开始的时候是没有问题的,但是当内部的foreach有多个值时,复选框就会出现相同的多个,于是发现了一个很矛盾的问题,JSTL的foreach是不可以嵌套使用的,会出现数据重复的问题,但是不嵌套的话,值又匹配不上。
而且百度上也找不到这个问题的解决办法,最后在前端同事的指导下,找到了一个解决方法,(我的这个前端同时学过PHP,说是PHP中有一个解决的方法),如下:
<c:forEach items="${role}" var="r" >                   
            <input type="checkbox" name="findRole" value="${r.roleName}" 
        <c:forEach items="${roleName}" var="rn" >
        <c:if test="${r.roleName==rn}">
        ${r.roleName==rn ? 'checked = "checked"' : ''}
        </c:if>
        </c:forEach> 
        />${r.roleName}
        </c:forEach> 

这里有两个后台传来的值,一个是角色的所有种类,一个是此人员的角色,我们需要用人员的角色来匹配所有的角色,相等的时候就可以让复选框选,通过在标签中写循环和判断可以简便的解决这个问题。
第一个foreach是在input标签的外面加着,类似于这样

    <c:forEach items="${role}" var="r" >                   
            <input type="checkbox" name="findRole" value="${r.roleName}" />
    </c:forEach> 

第二个foreach是在input标签中加的,并且进行了逻辑判断,是否匹配

<input type="checkbox" name="findRole" value="${r.roleName}" 
        <c:forEach items="${roleName}" var="rn" >
        <c:if test="${r.roleName==rn}">
        ${r.roleName==rn ? 'checked = "checked"' : ''}
        </c:if>
        </c:forEach> 
        />

这样就解决了内部foreach因为多条数据而出现的多个相同复选框的问题

当使用一个foreach进行匹配是,就没有那么麻烦了,类似于这样

部门下拉框的选中,直接在内部进行匹配
<select name="deptId">
    <c:forEach items="${dep}" var="d" >
    <option value="${d.dept_id}" ${user.deptId == d.dept_id ? 'selected = "selected"' : '' }>${d.dept_name}</option>    
    </c:forEach>    
   </select>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值