JSP 中 JSTL 页面标签的笔记
jsp头部引入使用的标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
①循环
controller中 new ModelMap().addAttribute("list",list); 将list数据放到request中后需要在页面中使用的时候需要循环
<c:forEach items="${list}" var="m">
name:${m.name}
</c:forEach>
②判断
jsp页面中使用if判断语句,以循环为例,需要list的length属性
PS:forEach可以循环包括List Set 等常用集合
场景:多个结果使用竖线分隔,最后一个不需要竖线(内地|港澳|欧美)
<c:forEach items="${list}" var="s" varStatus="st">${s.name}
<c:if test="${fn:length(list)!=(st.index+1)}">|</c:if>
</c:forEach>
varStatus="st" 可以用来代表元素的序号从0开始,如list有5条数据st最大可到4
if判断条件在页面中要使用${}对获取值进行处理后将结果放入test的判断中,即test引号内结果可认为是true,false
对于list的length使用 fn:length(list) 获取,list中没有length或者size属性,需要java处理后才能得知list个数或者长度。
st中包含index属性,即表示循环的值0~4,因为length从1开始,对比的时候需要将index+1后进行判断
依旧假设list元素有5个,在list循环到最后一次时 st.index 的值为4,判断结果为相等时跳出循环,即不显示最后一个竖线(|)
③标签和java程序嵌套使用
场景:当list中存在外键实体如 list的一个元素m,m.type.category.name(一首歌曲有多个关联关系 type属性为:轻音乐,柔情歌曲。category属性同为mp3)此时如果需要对最大的分类进行循环显示--mp3,就会造成显示2次mp3(xx之歌|[轻音乐][柔情歌曲]|[mp3][mp3])
大多数人会建议在controller中进行处理,不过在实体不会进行改变的条件下可以使用标签和java程序嵌套方式处理显示
<c:forEach items="${list}" var="m">
<%
Film f = (Film)pageContext.getAttribute("m");
Set<FilmTypeMap> mtp = mv.getFilmTypeMap(); //这里需要Film实体中含FilmTypeMap这个实体Set集合
Map<Long,String> map = new HashMap<Long,String>();
for(FilmTypeMap tm:mtp){
map.put(tm.geFilmType().getFilmCategory().getId(), tm.getFilmType().getFilmCategory().getName());
}
for(String str:map.values()){
out.print("["+str+"] ");
}
%>
④日期处理
按照 yyyy-MM-dd 方式显示
<fmt:formatDate value="${time}" pattern="yyyy-MM-dd"/>
20120808 一天遇到的问题整理记录
⑤有c:if 没有c:else的解决方法
类似choose case的条件判断
<c:choose>
<c:when test="">if结果</c:when>
<c:otherwise>else结果</c:otherwise>
</c:choose>
⑥在jsp页面中取列表长度 如list的size 或数组长度
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:out value="${fn:length(list)}"></c:out>
粘贴:fn标签
<%@tablib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
${fn:substring("你要截取的字符串"),beginIndex,endIndex}
下面是JSTL中自带的方法列表以及其描述
函数名 函数说明 使用举例
fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}">
fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) <c:if test="${fn:containsIgnoreCase(name, searchString)}">
fn:endsWith 判断字符串是否以另外字符串结束 <c:if test="${fn:endsWith(filename, ".txt")}">
fn:escapeXml 把一些字符转成XML表示,例如<字符应该转为< ${fn:escapeXml(param:info)}
fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")}
fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开 ${fn:join(array, ";")}
fn:length 获取字符串的长度,或者数组的大小 ${fn:length(shoppingCart.products)}
fn:replace 替换字符串中指定的字符 ${fn:replace(text, "-", "•")}
fn:split 把字符串按照指定字符切分 ${fn:split(customerNames, ";")}
fn:startsWith 判断字符串是否以某个子串开始 <c:if test="${fn:startsWith(product.id, "100-")}">
fn:substring 获取子串 ${fn:substring(zip, 6, -1)}
fn:substringAfter 获取从某个字符所在位置开始的子串
${fn:substringAfter(zip, "-")}
fn:substringBefore 获取从开始到某个字符所在位置的子串 ${fn:substringBefore(zip, "-")}
fn:toLowerCase 转为小写 ${fn.toLowerCase(product.name)}
fn:toUpperCase 转为大写字符 ${fn.UpperCase(product.name)}
fn:trim 去除字符串前后的空格 ${fn.trim(name)}
JSP 中 JSTL 页面标签的笔记的更多相关文章
- jsp中jstl标签的类似 if - else 语句 的语法
在jsp中引入jstl的标签库和函数库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...
- 转载:jsp中jstl标签的类似 if - else 语句 的语法
原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...
- JSP中 JSTL和EL标签的使用
使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL简介 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应 ...
- jsp 中 jstl c:if等标签失效问题
<c:if test="${page == 1}"> ${s.index+1} </c:if> <c:if test="${page > ...
- 【JSP】JSTL核心标签库的使用方法和示例
JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...
- 自定义JSP中的Taglib标签之四自定义标签中的Function函数
转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...
- jsp之jstl核心标签库
JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...
- jsp引用JSTL核心标签库
一.引用JSTL 1. JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观. 2. 各套框架(还没有学习,比如struts,SpringMVC等 ...
- javaWeb 在jsp中 使用自定义标签输出访问者IP
1.java类,使用简单标签,jsp2.0规范, 继承 SimpleTagSupport public class ViewIpSimpleTag extends SimpleTagSupport { ...
随机推荐
- Javascript 文件操作(整理版)
Javascript 文件操作 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详细介绍 ...
- Laravel Eloquent ORM
Eloquent ORM 简介 基本用法 集体赋值 插入.更新.删除 软删除 时间戳 查询范围 关系 查询关系 预先加载 插入相关模型 触发父模型时间戳 与数据透视表工作 集合 访问器和调整器 日期调 ...
- Eclipse中Cannot find any provider supporting DES解决之道
原文出处:http://blog.csdn.net/darwinchina/article/details/12037999 异常: Caused by: java.security.NoSuchAl ...
- compareTo简介
compareTo()方法是用来比较字符串大小,该方法用来判断一个字符串是大于,等于还是小于另一个字符串.判断字符串大小的依据是根据他们在字典中的顺序决定的 语法 Str1.compareTo(Str ...
- 有关android 应用的plugin框架调研
1. 借助android提供的shareduserid属性使多个不同的apt共用一个userid,以扫除权限壁垒,获取插件context,继而获取view并加载插件.这种方式是建立在已经安装完成的ap ...
- JS 事件冒泡整理 浏览器的事件流
JavaScript与HTML的交互通过事件来实现.而浏览器的事件流是一个非常重要的概念.不去讨论那些古老的浏览器有事件捕获与事件冒泡的争议, 只需要知道在DOM2中规定的事件流包括了三个部分,事件捕 ...
- 如何判断Linux load的值是否过高
1.先使用top看下CPU占用高的进程,找出进程的进程ID(pid): 查看方法:top 2.根据进程ID(pid)查看是进程的那些线程占用CPU高. 查看方法:top -Hp pid 3.使用pst ...
- 数据库分库分表(sharding)系列(四) 多数据源的事务处理
系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题.总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务.基 ...
- Linux知识扫盲
1.发现linux中好多软件以d结尾,d代表什么? d 代表 deamon 守护进程守护进程是运行在Linux服务器后台的一种服务程序.现在比较常用 是 service 这个词.它周期性地执行某种任务 ...
- React/React Native的 ES5 ES6 写法对照
ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React; import Re ...