很久没碰jsp页面相关的开发了,一直是后台service即使最近使用的也是freemarker
springMVC后,不用struts2标签后页面的输出都要改用比较原始的标签了
今天一天的问题记录,后期不定时补充以扩充自己的问题集
jsp头部引入使用的标签
<%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld"%>
<%@ taglib prefix="fn" uri="/WEB-INF/tld/fn.tld"%>
<%@ taglib prefix="fmt" uri="/WEB-INF/tld/fmt.tld"%>
<%@ taglib prefix="spring" uri="/WEB-INF/tld/spring.tld"%>
①循环
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)}
分享到:
相关推荐
JavaServer Pages Standard Tag Library (JSTL) 是一套标准的标签库,用于简化JSP页面的编程,使得开发者能够使用标签而不是脚本来处理常见任务。在JSTL中,`EL(Expression Language)`是用于访问JavaBeans属性和...
JSTL(JavaServer Pages Standard Tag Library)是一组标准标签库,它为开发者提供了一系列的功能强大的标签,用于简化JSP页面的开发工作。JSTL标签库可以提高代码的可读性和可维护性,并且减少了对脚本语言的依赖,...
**JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP页面提供了一套方便使用的标签,用于简化HTML和JSP代码,提高开发效率。本教程将深入探讨JSTL的核心概念、表达式语言...
`<c:set>` 标签用于设置变量的值,这些变量可以在后续的JSP页面或同一请求内的其他JSP页面中使用。 #### 基本语法: ```xml [scope="{page|request|session|application}"]/> ``` 或者 ```xml [scope="{page|...
JavaServer Pages Standard Tag Library(JSTL)是一组自定义标签库,用于减少JSP页面中的Java代码量。JSTL标签封装了常见的功能,如条件语句、循环等。 - **JSTL标签库**:JSTL标签库包含核心标签库和格式化标签库...
JSTL是一组标准标签库,它提供了一种更有效、更可维护的方式来编写JSP页面,相比于使用脚本元素和自定义标签。JSTL主要包含五个核心部分:Core(核心)、XML、JDBC、JSTL函数库和EL(Expression Language)标签。...
- **JSTL标签**:一组标准标签库,用于简化页面逻辑。 #### JSP指令详解 - **Page指令**:,用于设置页面的一些基本属性。 - **language**:指定页面使用的编程语言,默认为Java。 - **import**:导入所需的包和...
JSP四大域对象和JSTL、EL表达式
标题“jstl标签帮助文档”和描述表明,这份文档是一份关于JSP页面标签库中常用标签的详细帮助文档,并附有学习笔记。文档是英文版的,可以推断它是对JavaServer Pages™ Standard Tag Library (JSTL) 的详细介绍。 ...
**JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它提供了一系列的标签用于简化JSP开发,使代码更加简洁且易于维护。JSTL主要由四个核心部分组成:Core、XML、Internationalization ...
**JSTL(JavaServer Pages Standard Tag Library)**是一个标准化的、开源的JSP标签库,旨在简化JSP页面的开发。它由Apache Jakarta小组维护,最初是为了减少JSP页面中自定义标签的重复定义而设计。JSTL 1.02是其...
JSP 通过允许在 HTML 页面中嵌入 Java 代码实现了动态内容的生成,而 JSTL 则进一步简化了页面开发流程,通过预定义的标签库减轻了编程负担。掌握这些技术和概念对于从事 Web 开发的人来说至关重要。
**JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)是Java Web开发中的两个重要组件,它们极大地简化了JSP页面的编写和管理。** **JSTL** 是一套标准的标签库,提供了丰富的功能,如迭代...
JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages 标准标签库)是Java Web开发中的一种重要工具,它为JSP页面提供了一系列预定义的标签,简化了页面逻辑,使得代码更加清晰易读。TLD(Tag Library ...
2. **JSP基本语法**:笔记中会介绍JSP的基本元素,如指令(directives)、动作(actions)和脚本元素(scriptlets)。其中,指令包括page、include和taglib,用于设置页面属性或引入其他资源;动作如jsp:include、...
JSTL(JavaServer Pages Standard Tag Library)是Java Web开发中的一个标准标签库,它提供了许多用于简化JSP页面逻辑的标签。以下是对标题“JSTL In Action部分笔记”和描述中提到的知识点的详细解释: 1. **标签*...
**JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP页面提供了一套方便、高效的标签,用于处理常见的页面逻辑和控制流程,从而减少Java代码在JSP页面中的使用,提高代码...
JSTL是JavaServer Pages标准标签库,它提供了一组预定义的标签,用于简化JSP页面的开发,使其更加结构化,可读性更强,同时也提高了代码的复用性和可维护性。JSTL主要包含五个核心组件:Core、XML、Format、I18N和...