JSP EL表达式

EL(表达式语言)是在JSP2.0版本中引入的新特性。

它用于JSP文件中的数据访问,它可以简化JSP文件中数据访问的代码。使JSP页面写起来更简单。

可以代替传统的“<%= %>”形式的java表达式。

 

EL表达式不起作用 如果在JSP页面中 ${spittle.message} 就显示为 ${spittle.message} 而不是希望显示的属性值

那么可以在.jsp文件中添加 即可 参考 JSP页面中EL表达式不起作用的解决方法 

<%@ page isELIgnored="false"%>

语法结构

${expression}
[]与.运算符

 

EL提供"." 和"[]"两种运算符存取数据。当要存取的属性名称包含一些特殊字符,如 . 或 -等并非字符或数字的符号,就一定要使用"[]" 例如  

${ user. My-Name}应当改为${user["My-Name"]}

EL中的运算符

算数运算符: + - × / div % mod 

关系运算符:> or gt .  >=  or ge . < or lt. <= or le.  == or eq.  != or ne

逻辑运算符:&& or and. || or or.  ! or not

判断运算符: empty

 

获取客户端的数据

客户端数据:form表单提交的数据,或者url路径中的参数

EL表达式 

${param.username}  或 ${param[username]}

JSP表达式

 

<%=request.getParameter("username")%>

 

获取服务器端的数据

 

EL表达式

 

${username}

以上代码依次从Page,Request,Session,Application范围中查询username。如果查到,返回username。如果都没查到,则返回""。

JSP表达式

 

<% String username = request.getAttribute(username)%>

例子

 

Spring框架 后台返回页面的时候,可以往页面中传递参数,用Model类

后台代码

//重点看model的两句话怎么用的
//传入前台的users是个list,List中每一个对象是自定义实体类User,包含属性id和name
//传入前台的area是个实体类,包含属性id和name
    @RequiresPermissions("area:create")
    @RequestMapping(value = "/add/{id}", method = RequestMethod.GET)
    public String createAreaInit(Model model, @PathVariable("id") Long id) {
        model.addAttribute("myname", smx); //传入前台的myname是个基本类型

        List<User> users = userService.findAll();// 获取用户列表
        model.addAttribute("users", users); //传入前台的users是个list

        Area area = areaService.findOne(id); // 查询所属区域
        model.addAttribute("area", area);//传入前台的area是个实体类
        return "area/add"; // 显示添加页面
    }

前台html代码

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!--<c:forEach>标签  可以在html中用循环 -->
 <div class="form-group">
    <label for="name">名字:</label> 
    <input type="text" id="name" value=${myname} >
</div>

 <div class="form-group">
    <label for="areaName">所属区域:</label> 
    <input type="text" id="areaName" value=${area.name} readonly>
</div>

<div class="form-group">
    <label for="userId">负责人:</label> 
    <select for="userId" id="userId" name="userId">
        <c:forEach var="user" items="${users}">
            <option value="${user.id}">${user.username}</option>
        </c:forEach>
    </select>
</div>

前台js代码 

 

js代码中想用后台通过model传过来的参数

 

 

<script>
//(1)如果后台传过来的是个实体类
var areaName= "${area.name}";
alert(areaName);
//var area = "${area}"; 错 要落实到一个基本类型上
//(2)如果后台传过来的是个基本类型
var myname = "${myname}";
alert(myname);
//(3)如果后台传过来的是个list js没办法处理
</script>

 

 

 

 

 

 

 

posted on 2018-01-16 10:32  dreamstar  阅读(52)  评论(0编辑  收藏  举报