EL表达式

CreateTime--2017年1月7日15:22:16
Author:Marydon
EL表达式

声明:该总结借鉴了他人的经验(非纯原创)
UpdateTime--2017年1月12日16:22:29
在EL表达式中我们可以使用运算符以达到我们想要的结果,运算符按作用分为以下几种:
1.算术运算符
  + 例如:${6+6} 。
  注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。
  - 例如:${4-3}
  * 例如:${4*3}
  / 例如:${9/3}
2.关系运算符
  > 或者 gt, 例如:${8>9} 或者 ${8 gt 9 }
  >= 或者 ge, 例如:${4>=9} 或者 ${4 ge 9 }
  < 或者 lt, 例如:${4<9} 或者 ${4 lt 9 }
  <= 或者 le, 例如:${9<=8} 或者 ${9 le 8 }
  == 或者 eq,
    例如:获取后台数据并进行等值比较

<c:if test="${model.FITEMTYPE == 1}">
    <xyhsoft:toolbar moduleCode="101301" />
</c:if>
<c:if test="${model.FITEMTYPE == 0}">
    <xyhsoft:toolbar moduleCode="101302" />
</c:if>

  != 或者 ne, 例如:${4!=3} 或者 ${4 ne 3 }
3.逻辑运算符
  && 或者 and, 例如:${false && false} 或者 ${false and false }
  || 或者 or, 例如:${true || false} 或者 ${true or false }
  

<c:if test="${param.FVISTYPE=='1' or param.FVISTYPE=='12' or param.FVISTYPE=='1,12' }">
  <i:th defW="5%">保障内费用</i:th>
</c:if>

  ! 或者 not, 例如:${!true} 或者 ${not true},相当于${false}
4.三元运算符
  ? : 即 ${条件表达式?表达式1:表达式2}
  例如:通过三元运算符取值

<i:panel title="${model.FITEMTYPE == 1 ? '特殊病种诊疗限制' : '特殊病种用药限制' }"></i:panel>

5.特殊运算符
  a."empty" 与"not empty"
    判断EL表达式中的表达式是否为空,即:若 user == null || user == "",返回TRUE;否则返回FALSE
    例1:

<%request.setAttribute("user","");%>
${not empty user} <!-- 返回值为false -->

    例2:

<c:if test="${row['FTYPE']==0}">正常日志</c:if>
<c:if test="${row['FTYPE']==1}">错误日志</c:if>
<c:if test="${empty row['FTYPE']}">全部类型日志</c:if>

  b."."
    "." 是我们最常用的,作用相当于执行Bean中的get方法。
    例如:${sessionScope.user.userName}
      意思是:在会话中得到名称为user的Bean对象,通过“.”运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值。
  c."[]"
    []的作用和“.”运算符一样,只不过[]运算符可以执行一些不规则的标识符。
    例1:获取集合的两种方式

<!-- 方式一:使用"['']" -->
<c:forEach var="row" items="${model['organizes']}" varStatus="s">
    <tr class="TableRow" oldclass="TableRow" align="center" key="<c:out value="${row['ORGID']}"></c:out>">
        <td nowrap="nowrap" class="TableCell" align="right">
            <c:out value="${row['SORTNO']}"></c:out>
        </td>
        <td nowrap="nowrap" class="TableCell" align="center">
            <!-- 方式二:使用"." -->
            <c:if test="${row.STATUS==1}">启用</c:if>
            <c:if test="${row.STATUS==2}">禁用</c:if>
        </td>
    </tr>
</c:forEach>

    这两种方式的不同之处在于:
      当需要通过索引号来获取集合中的某个元素时,只能使用"[index]"
      如:        

<input id="FZJM" name="FZJM" value="${model.data[0].FZJM}" type="hidden"/>

    例2:${requestScope.user["score-math"]},这个表达式中有不规则的标识符,是不能使用“.”来访问的。

以下内容为原创

UpdateTime--2017年5月11日08:48:53

 6.EL表达式的两个特征

<script type="text/javascript">
    window.onload = function () {
        var bb = document.getElementById("aa").getAttribute('test');
//             if ("" == bb)
//             alert(bb);
        document.getElementById("cc").innerHTML = bb;    
        var tdValue = document.getElementById("dd").innerHTML;
        if ("" == tdValue)
            alert(tdValue);
    }
</script>
<body>
    <!-- 说明el表达式的两个特征:
        1.el表达式取值,为空或不存在时,不报空指针异常;
        2.返回的值是空字符串:""
    -->
     <table id="aa" test="${model }">
        <tr><td id="dd">${model }</td></tr>
     </table>
     <div id="cc"></div>
</body>

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2017-03-09 09:56  Marydon  阅读(809)  评论(0编辑  收藏  举报