在 JSP2.0 规范下出现的 Functions 标签库为 EL 表达式语句提供了许多更为有用的功能。
Functions 标签库分为两大类,共 16 个函数。
长度函数: fn:length
字符串处理函数: fn:contains 、 fn:containsIgnoreCase 、 fn:endsWith 、 fn:escapeXml 、 fn:indexOf 、 fn:join 、 fn:replace 、 fn:split 、 fn:startsWith 、 fn:substring 、 fn:substringAfter 、 fn:substringBefore 、 fn:toLowerCase 、 fn:toUpperCase 、 fn:trim
以下是各个函数的用途和属性以及简单示例。
1.1 长度函数 fn:length 函数
长度函数 fn:length 的出现有重要的意义。在 JSTL1.0 中,有一个功能被忽略了,那就是对集合的长度取值。虽然 java.util.Collection 接口定义了 size 方法,但是该方法不是一个标准的 JavaBean 属性方法(没有 get,set 方法),因此,无法通过 EL 表达式“ ${collection.size} ”来轻松取得。
fn:length 函数正是为了解决这个问题而被设计出来的。它的参数为 input ,将计算通过该属性传入的对象长度。该对象应该为集合类型或 String 类型。其返回结果是一个 int 类型的值。下面看一个示例。
<%ArrayList arrayList1 = new ArrayList();
arrayList1.add("aa");
arrayList1.add("bb");
arrayList1.add("cc");
%>
<%request.getSession().setAttribute("arrayList1", arrayList1);%>
${fn:length(sessionScope.arrayList1)}
假设一个 ArrayList 类型的实例“ arrayList1 ”,并为其添加三个字符串对象,使用 fn:length 函数后就可以取得返回结果为“ 3 ”。
1.2 判断函数 fn:contains 函数
fn:contains 函数用来判断源字符串是否包含子字符串。它包括 string 和 substring 两个参数,它们都是 String 类型,分布表示源字符串和子字符串。其返回结果为一个 boolean 类型的值。下面看一个示例。
${fn:contains("ABC", "a")}<br>
${fn:contains("ABC", "A")}<br>
前者返回“ false ”,后者返回“ true ”。
1.3 fn:containsIgnoreCase 函数
fn:containsIgnoreCase 函数与 fn:contains 函数的功能差不多,唯一的区别是 fn:containsIgnoreCase 函数对于子字符串的包含比较将忽略大小写。它与 fn:contains 函数相同,包括 string 和 substring 两个参数,并返回一个 boolean 类型的值。下面看一个示例。
${fn:containsIgnoreCase("ABC", "a")}<br>
${fn:containsIgnoreCase("ABC", "A")}<br>
前者和后者都会返回“ true ”。
1.4 词头判断函数 fn:startsWith 函数
fn:startsWith 函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个 string 参数外,还包含一个 subffx 参数,表示词头字符串,同样是 String 类型。该函数返回一个 boolean 类型的值。下面看一个示例。
${fn:startsWith ("ABC", "ab")}<br>
${fn:startsWith ("ABC", "AB")}<br>
前者返回“ false ”,后者返回“ true ”。
1.5 词尾判断函数 fn:endsWith 函数
fn:endsWith 函数用来判断源字符串是否符合一连串的特定词尾。它与 fn:startsWith 函数相同,包括 string 和 subffx 两个参数,并返回一个 boolean 类型的值。下面看一个示例。
${fn:endsWith("ABC", "bc")}<br>
${fn:endsWith("ABC", "BC")}<br>
前者返回“ false ”,后者返回“ true ”。
1.6 字符实体转换函数 fn:escapeXml 函数
fn:escapeXml 函数用于将所有特殊字符转化为字符实体码。它只包含一个 string 参数,返回一个 String 类型的值。
1.7 字符匹配函数 fn:indexOf 函数
fn:indexOf 函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“ -1 ”。它包括 string 和 substring 两个参数,返回结果为 int 类型。下面看一个示例。
${fn:indexOf("ABCD","aBC")}<br>
${fn:indexOf("ABCD","BC")}<br>
前者由于没有匹配成功,所以返回 -1 ,后者匹配成功将返回位置的下标,为 1 。
分享到:
相关推荐
#### 四、Struts2中EL表达式的使用 在Struts2框架中,EL表达式的搜索顺序非常重要,它决定了框架如何查找并获取数据。默认情况下,EL表达式的搜索顺序为: - page - request - session - application 通过增强搜索...
本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....
在Struts2中,可以使用EL表达式来访问JavaBean的属性。EL表达式遵循如下规则: - EL表达式通过`$`或`${}`的形式来引用属性。 - 可以使用`.`或`[]`语法来访问对象的属性。 - EL表达式默认会先查找page范围内的变量,...
表达式语言方面,Struts1集成JSTL EL,但其对集合和索引属性的支持较弱。Struts2引入了更强大的OGNL,提供了更灵活的对象图遍历和类型转换。 页面绑定方面,Struts1依赖JSP标准机制,而Struts2采用ValueStack技术,...
为了使EL表达式能够访问`ValueStack`中的数据,Struts2在`HttpServletRequest`的基础上封装了一个类——`StrutsRequestWrapper`。这个类重写了`getAttribute_r`方法,使其能够在没有找到相应属性时,尝试从`...
本文档将详细介绍如何在Struts 2中实现Action动态方法调用,并通过实例演示其具体应用。 #### 二、基础知识回顾 在开始深入探讨动态方法调用之前,让我们先回顾一下Struts 2框架的基本概念。 1. **Action**: 在...
- **Struts1**:整合JSTL EL,但对集合和索引属性支持有限。 - **Struts2**:支持OGNL,这是一种更强大和灵活的表达式语言,提供了更全面的对象图遍历功能。 7. **值绑定到页面**: - **Struts1**:使用JSP标准...
- **$**:在JSP页面中表示EL表达式的开头,但在Struts2中通常不直接使用,而是通过#符号配合使用。 #### 五、示例代码详解 为了更好地理解OGNL表达式的使用,我们来看一个具体的示例。假设我们在开发一个简单的Web...
- **Struts1**支持使用JSTL标签库和EL表达式语言,但其对视图技术的支持相对较为有限。 - **Struts2**同样支持JSTL标签库,同时提供了更为强大的表达式语言——Object Graph Notation Language (OGNL),这使得开发者...
- **在JSP中使用EL表达式**: 在JSP页面中可以直接使用EL表达式访问值栈中的数据。如`<%= username %>`或`${username}`,而无需通过类名和属性名的形式,提高了代码的简洁性和可读性。 ##### 2. Action接口与execute...
在Struts1中,Action类需要继承自一个抽象基类,而在Struts2中,Action类可以实现Action接口,也可以实现其他接口,甚至无需实现Action接口,只要具有`execute`方法的POJO对象即可作为Action。此外,Struts2提供了...
在这个主题“Struts2_访问web元素_accessWebElements_s”中,我们将深入探讨如何在Struts2中有效地访问和操作web元素。 首先,了解Struts2的生命周期至关重要。当一个HTTP请求到达服务器时,Struts2框架会接管请求...
相对EL表达式,它提供了平时我们需要的一些功能,如: ? 支持对象的方法调用 ,如 xxx.sayHello(); ? 支持类静态方法调用和值的访问,表达式的格式为@[类全名]@[方法名|值名],例如:@java.lang.String@format(...
在表达式语言方面,Struts1整合了JSTL EL,但其对集合和索引属性的支持有限。Struts2引入了更强大的OGNL(Object Graph Notation Language),支持更复杂的对象图遍历和表达式操作。 绑定值到视图(View)的方式,...
在Struts2中,我们可以使用OGNL(Object-Graph Navigation Language)表达式来绑定表单字段到Action类的属性。例如,如果HTML表单有一个名为`username`的输入框,我们可以在Action类中创建一个同名的属性: ```java...
在Struts2中的应用: 1. Action结果映射:Struts2允许在Action的结果配置中使用OGNL表达式,比如跳转到某个页面并传递参数。 2. 结果值栈:Struts2使用值栈来存储请求相关的数据,OGNL可以从值栈中检索或修改数据。 ...
1. **Action类**:在Struts2中,业务逻辑通常被封装在Action类中。一个Action类代表了一个用户请求的处理逻辑。例如,你可以创建一个名为`HelloWorldAction`的类,其中包含一个方法来处理用户的请求。 2. **配置...
在Struts2中,可以通过特定的方法获取Servlet容器的信息。例如,可以在JSP页面中使用EL表达式`${pageContext.request.contextPath}`来获取当前应用的上下文路径。 **页面示例:** ```html 客户的管理 ${...