码迷,mamicode.com
首页 > Web开发 > 详细

关于jstl的使用

时间:2017-10-12 20:24:37      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:stl   情况   foreach   遍历   没有   log   add   false   exce   

1、jsp中el表达式无法被解析

  使用jstl标签的时候,发现el表达式无法被解析,后来查阅资料发现jsp中需要添加<%@page isELIgnored="false" %>,表示是否忽略el表达式,当然是false,不允许。

  技术分享

  但是归结到底,罪魁祸首还是在idea编译器,他生成的web.xml竟然是2.3版本的,在没有添加<%@page isELIgnored="false" %>的情况下,更改web.xml的版本也是一个办法

1 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
2          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
4          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
5          version="3.1">

 

  如上将web版本改成2.3以上即可。因为2.3本身不默认支持el表达式解析。

2.jstl标签属性整理:

  核心标签:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>也是最常用的

  技术分享

  c:forEach 的 varStatus属性解析

  varStatus属性  类型:String   描述:循环的状态信息,可以取值index\count\first\last\current  

  不可以使用EL表达式我们常使用<c:forEach>标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。varStatus属性常用参数如下:

  current:当前这次迭代的(集合中的)项
  index:当前这次迭代从 0 开始的迭代计数
  count:当前这次迭代从 1 开始的迭代计数
  first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false
  last:用来表明当前这轮迭代是否为最后一次迭代的标志,返回true/false

  格式化标签:<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>用于格式化时间,日期和数字等信息

  技术分享

  标准函数:<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 通用字符串处理函数

  技术分享

3、jstl的使用

  3.1如何通过servlet将数据传到jsp页面呢?

    

 1 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 2         List mlist = new ArrayList();
 3         mlist.add("test1");
 4         mlist.add("test2");
 5         mlist.add("test3");
 6         mlist.add("test4");
 7         mlist.add("test5");
 8         req.setAttribute("mlist",mlist);
 9         // resp.getWriter().append(((List<String>)req.getAttribute("mlist")).get(1));
10         Map<String ,String> mMap = new HashMap<String, String>();
11         mMap.put("key1","value1");
12         mMap.put("key2","value2");
13         mMap.put("key3","value3");
14         mMap.put("key4","value4");
15         req.setAttribute("map",mMap);
16         req.getRequestDispatcher("/").forward(req,resp);
17     }

 

   主要使用req.setAttribute(key,value) 设置请求参数用于jsp页面展示,然后使用req.getRequestDispatcher("/").forward(req,resp);转发请求将内容提交到jsp页面。

  3.2通过jstl展示

 1 <ul>
 2         <li>list方式</li>
 3         <c:forEach items="${mlist}" var="l" varStatus="vs">
 4             <li style="list-style: none">${l}=>${vs.first}=>${vs.count}=>${vs.index}</li>
 5         </c:forEach>
 6 
 7         <li>map方式</li>
 8         <c:forEach items="${map}" var="m" varStatus="vs">
 9             <li style="list-style: none">${m.key}=>${m.value}</li>
10         </c:forEach>
11     </ul>

 

   结果展示:

技术分享

  此处如果出现el表达式无法解析的情况,可参考第一条。

 

关于jstl的使用

标签:stl   情况   foreach   遍历   没有   log   add   false   exce   

原文地址:http://www.cnblogs.com/caijh/p/7657700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!