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>