【Web】EL表达式的一些注意事项(不定时更新)

最近在写一个从Excle题库抽题组卷在jsp显示的功能,其中用到了一些算法和技术,在此做记录。

1.通过java读取excle中内容;

2.获取某范围内的一个随机数;

3.从m个数中随机抽取n个数;

4.获取jsp界面中单选框的选择结果;

5.EL表达式的一些注意点(不定时更新)。

本篇主要来介绍EL表达式的一些注意点。

①EL表达式嵌套

EL表达式是不能够直接用$嵌套使用的,如果要嵌套使用,需要省略掉嵌套里面的${}符号,如下:

<c:forEach items="${products }" var="product" varStatus="idx">
	<img src="${product.imgUrls[idx.index] }"/>
</c:forEach>

转自https://blog.csdn.net/leadseczgw01/article/details/53691232

②EL表达式中的<%%>

el表达式中不能用<%%>,但可以用标签定义一个变量再用<%%>赋值后作为中间变量,通过EL表达式获取值。

③在js中如何使用EL表达式

因为EL表达式是在服务端解析完成的,而js是在客户端解析完成的,因此,处理的方法比较特殊,现给出两种处理方式。

方法一:直接在JSP中引入js脚本

直接在JSP中加入js脚本<script></script>,在<script></script>之间调用EL表达式是可以成功调用的。

(补充知识点:在引入js脚本时,最好不要用<script />,这样的话之后的引入的js脚本可能会有问题)

方法二:在jsp隐藏EL设置的值,并通过js进行获取(间接方法)

比如:在jsp页面中设置如下:

<input type=”hidden” id=”sex” value=”${sex}” />
在相应的js文件中,通过如下:

var sex = $(“#sex”).val();
获取相应的EL的值。

④在js中使用EL表达式一定要使用双引号(双引号出错时用单引号),即:“${标识符}”

在EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符作为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应的对象,找不到则返回“”(注意:是空字符串,不是null,此时如果不加双引号,则会报错,只有加入双引号才能正确返回,当然也可以加单引号)。

有一个问题是:如果加了双引号,则返回的原本是json对象,会自动转为字符串,因此,如果要作为json对象处理,需要,在js中添加如下代码:

var jsonStr = “${obj}”;
eval('('+ jsonStr +')');
⑤EL中获取session中的一个属性值

比如:在Java代码中设置如下:

request.getSession().setAttribute("session_in_username", "tim");
然后在JSP页面中获取如下参数:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<div class="header-box">
        <div class="site-header">
            <a href="/index.jsp" class="logo fl" title="******"></a>
            <div class="user-msg fr">
                <a href="javascript:;" title="首页" id="homePage">首页</a>
                <!-- <a href="####" title="帮助文档">帮助文档</a>  -->
                <a href="####">欢迎 <span>${sessionScope['session_in_username'] }</span> </a> 
                <a href="javascript:;" id="logout" title="退出">[退出]</a>
            </div>
        </div>
</div>


通过命令:${sessionScope[‘session_in_username’]}

注意:

在EL表达式中的${sessionScope.session_in_username}和${sessionScope[‘session_in_username’]}的用法是一样的,推荐用中括号,另外推荐用双引号将其扩起来,比如:”${sessionScope[‘session_in_username’]}”

③~⑤原文链接:https://blog.csdn.net/timchen525/article/details/78334706

发布了31 篇原创文章 · 获赞 6 · 访问量 4201

猜你喜欢

转载自blog.csdn.net/zhenliangit0918/article/details/104110557