function标签库对el表达式的输出值进行了处理:
使用:在el表达式中使用:${ fn:函数名(参数...)}
function标签库函数使用:
1:${fn:contains(name, searchString)} name变量的字符串值是否包含searchString子串,返回boolean值
2:${fn:containsIgnoreCase(name, searchString)} 与1相同+忽视大小写
3:${fn:endsWith(filename, ".txt")} 判断filename是否以.txt子串结束 ,返回boolean值
4:${fn:escapeXml(param:info)} Escapes characters that could be interpreted as XML markup.返回string值
5:${fn:indexOf(name, "-")} name中第一次出现-字符的下标 返回int值
6:${fn:join(array, ";")} 将array数组,用;连接成一个字符串,返回string值
7:${fn:length(shoppingCart.products)} shoppingCart.products变量的长度,返回int值
8:${fn:replace(text, "-", "•")} 将text中的-字符串用•字符串代替,返回行的字符串String值
9:${fn:split(customerNames, ";")} 将customerNames用;分割,返回字符串数组
10:${fn:startsWith(product.id, "100-")} 判断product.id是否以100-子串开头 ,返回boolean值
11:${fn:substring(zip, 6, -1)} 截取zip的子串,从下标为6 到length-1(不包含)的子串,返回子串String值
12:${fn:substringAfter(zip, "-")} 将zip中 从 第一次出现-字符串的下标 到最后 截取成子串,返回子串String值
13:${fn:substringBefore(zip, "-")} 将zip中 从下标0 到 第一次出现-字符串的下标 (不包含) 截取成子串,返回子串String值
14:${fn.toLowerCase(product.name)} 将product.name全部字母转换成小写,返回新的String值
15:${fn.UpperCase(product.name)} 将product.name全部字母转换成大写,返回新的String值
16:${fn.trim(name)} name前后空格去掉,返回新的String值
i18n国际化标签库:
1:建立资源文件:文件名格式:资源名_语言_国家.格式名
文件内容:key=value格式
在java中使用:
public static void main(String[] args) {
//参数是:baseName-- 本例指的是资源文件名是: msg**.properties
//ResourceBundle rd = ResourceBundle.getBundle("msg");//读取的是:msg_zh_CN.properties
//ResourceBundle rd = ResourceBundle.getBundle("msg",Locale.US); //读取的是:msg_en_US.properties
ResourceBundle rd = ResourceBundle.getBundle("msg",Locale.CANADA); //本例读取的是:msg_zh_CN.properties ---因为是中文系统。按原理,如果没找到对应国家语种的资源文件(如果不存在时,还会根据系统的国家语种再找一次,如果还没有),则是读取的是默认的msg.properties
String str1 = rd.getString("welcome");//get(key)获取value值
String str2 = rd.getString("time");
System.out.println(str1+"----"+str2);
}
在jstl标签中使用:
<%@page import="cn.hncu.elWeb.domain.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="msg"/>
<!-- 真正搞国际,应该要把设置Locale和Bundle的代码放在head标签中,页面只负责显示。 -->
</head>
<body>
张三,<fmt:message key="welcome"/><br/>
<fmt:message key="time"/>fddfdfdfdfdfdf
<hr/>
<!-- 相比上一版本,把国家语种用参数进行传递 -->
<a href="?loc=en_US">English</a>
<a href="?loc=zh_CN">中文</a>
<fmt:setLocale value="${param.loc}"/>
<fmt:setBundle basename="msg"/>
张三,<fmt:message key="welcome"/><br/>
<fmt:message key="time"/>fddfdfdfdfdfdf
<hr/>
<!-- 再演示一下多个资源的情况,第二个资源及以后都必须取别名(变量名)。前面(第一个)没取变量名的那个叫默认资源 -->
<fmt:setBundle basename="a" var="aaa" scope="session"/>
<!-- 如果多个页面都要使用,那么得把作用域设成session -->
张三,<fmt:message key="welcome"/><br/>
<fmt:message key="time"/>fd8888dfdf
<br/>
<!-- 如果是从非默认资源中读取,那么得指定资源名称即aaa。如果没有指定名称,那么就是从默认的读取 -->
<fmt:message key="address" bundle="${aaa}"></fmt:message>
<br/>
<a href="<c:url value='/jsps/c.jsp'/>">到网站的其它页面去看看</a>
</body>
</html>
注意:1:setBundle前面必须加上setLocale否则默认系统语言(顺序不可调)
2: setBundle不加var值,属于默认,多个setBundle要加var值,否则覆盖