`
yourenyouyu2008
  • 浏览: 286795 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EL Functions 使得static方法直接在el中使用

阅读更多

转载:http://www.seamframework.org/Documentation/CreatingCustomELFunctions

 

In the WebContent/META-INF/ (JBDS) or view/META-INF/ (seam-gen) create a file called elfunctions.taglib.xml. If the META-INF/ dir does not exist, create it also. The content of elfunctions.taglib.xml should be:

 

<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "facelet-taglib_1_0.dtd">
<facelet-taglib>
	 <library-class>org.el.func.FnLibrary</library-class>
</facelet-taglib>

Create another src package src/facelets with the packagename: org.el.func and add

 

package org.el.func;

import com.sun.facelets.tag.AbstractTagLibrary;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class FnLibrary extends AbstractTagLibrary {

	public final static String Namespace = "http://org.el.func/SeamFunc";

	public static final FnLibrary INSTANCE = new FnLibrary();

	public FnLibrary() {
		super(Namespace);
		try {
			Method[] methods = SeamFunc.class.getMethods();
			for (int i = 0; i < methods.length; i++) {
				if (Modifier.isStatic(methods[i].getModifiers())) {
					this.addFunction(methods[i].getName(), methods[i]);
				}
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}

The above will dynamically add any of the static methods in a class called SeamFunc.java to be available in the EL. Now create org.el.func.SeamFunc.java:

package org.el.func;

import org.jboss.seam.core.Expressions;

public class SeamFunc {

	public static String concat(String... strings) {
		StringBuilder buff = new StringBuilder();
		if (strings != null) {
			for (String str : strings) {
				buff.append(str);
			}
		}
		return buff.toString();
	}

	public static Object evalEl(String expression) {
		String framedExpr = "#{" + expression + "}";
		Object value = Expressions.instance().createValueExpression(framedExpr).getValue();
		return value;
	}

}

Now the last piece is to define the location of the elfunctions.taglib.xml in web.xml:

<context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>
        /META-INF/elfunctions.taglib.xml
    </param-value>
</context-param>

Create a test.xhtml page and add:

xmlns:e="http://org.el.func/SeamFunc"

and to the body:

#{e:concat('Hello ', 'World!')} / #{e:evalEl('conversation')}

These are just two examples of functions, you can create as many as you'd like. The evalEL seems useless, until you realize you can do something like:

#{e:evalEL(e:concat('person', 'Home'))}

which correctly resolves the value of the Seam component named personHome.

 

备注

facelets本身提供了jstl函数,所以jstl中的函数可以使用

 

分享到:
评论

相关推荐

    在自定义spring aop中使用el获取拦截方法的变量值。

    标题中的“在自定义Spring AOP中使用EL获取拦截方法的变量值”指的是在Spring的面向切面编程(AOP)中,通过Expression Language(EL,表达式语言)来访问被拦截方法的局部变量值。这通常涉及到Spring的代理机制、...

    倍福EL6692在TwinCAT中配置和使用.pdf

    倍福EL6692在TwinCAT中配置和使用 本文档主要描述如何使用EL6692(EtherCAT bridge terminal)在TwinCAT中进行跨网络数据交换。EL6692可以轻易地实现多个网络系统之间的实时数据交换(约1ms)。下面将详细介绍EL...

    popt-static-1.13-7.el6.x86_64

    这个软件包的主要功能是提供popt库的静态编译版本,使得其他程序在构建时可以直接将popt的功能嵌入到可执行文件中,而不需要在运行时依赖动态链接库。 描述中提到的“popt-1.13-7.el6.x86_64”是popt库的标准动态库...

    jsp EL调用业务方法

    在EL中,除了访问属性外,还可以直接调用JavaBean中的公共方法。这极大地减少了JSP页面上的Java脚本let代码,使页面更易于维护。以下是一个简单的例子: ```jsp ${myBean.myMethod(param1, param2)} ``` 在这个...

    EL表达式的使用详解

    EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细介绍 EL 表达式的使用...

    javax.el-api.jar/javax.el.jar

    在EL 2.2中,引入了一些重要的增强,比如支持方法调用,这使得EL不仅仅能读取对象的属性,还可以直接调用对象的方法,甚至传递参数。此外,还增加了对Java 5及以后版本的泛型支持,使得EL可以更好地集成到现代Java...

    EL表达式的使用方法

    ### EL表达式的使用方法 #### 一、简介 在Java Web开发中,EL(Expression Language)表达式是一种非常实用的功能,它允许开发者在JSP页面中动态...在实际项目开发中,熟练掌握EL表达式的使用方法是非常有必要的。

    EL表达式使用详解

    如果使用的是只支持Servlet2.3/JSP1.2的容器,如Tomcat 4.1.29,那么无法直接在JSP网页中使用EL,需要安装支持Servlet2.4/JSP2.0的容器。 EL表达式以`${`开始,以`}`结束。它提供两种运算符来存取数据:点(`.`)...

    E语言免杀之易语言程序永久去除-EL-HideOwner的附件krnln-static.zip

    易语言程序永久去除_EL_HideOwner方法 首先找到易语言安装目录,然后打开static_lib文件夹,可以看到里面有个krnln_static.lib文件。 我们只需要用其他文件替换下它即可解决易语言免杀功能了。 _EL_HideOwner ...

    EL表达式内置的方法

    这行代码告诉容器不要忽略EL表达式,使得EL可以在页面中正常工作。 #### 三、EL内置对象 除了能够访问各种对象之外,EL还提供了一系列内置对象,这些对象可以帮助我们执行常见的字符串操作、集合处理等任务,大大...

    el-table,el-form在vue中封装组件化,含操作按钮和插槽.pdf

    在给定的文件中,展示了如何利用Element UI库来封装`el-table`和`el-form`组件,这两个组件在管理系统的界面中非常常见,特别是用于数据展示和表单提交。 首先,我们关注`el-form`组件的封装。`el-form`用于创建...

    element-ui 的el-button组件中添加自定义颜色和图标的实现方法.docx

    总结来说,Element UI 的 el-button 组件中添加自定义颜色和图标的实现方法可以通过添加自定义的全局指令,并在项目公共的 js 中编写自定义的指令来实现。这是一种非常灵活和方便的方法,可以满足不同的需求和场景。

    比较实用的el方法和总结

    EL和JSTL的结合使用极大地简化了JSP页面中的逻辑处理,使得页面更加整洁,易于维护。通过掌握上述EL方法和JSTL标签的运用,开发者可以更高效地处理数据、进行条件判断和循环操作,提升网页制作的效率和质量。在实际...

    EL手册 EL手册 EL手册

    EL的另一个重要特性是它的变量解析机制,它能查找变量在不同的作用域中,这使得开发者可以在JSP页面中轻松地访问和操作模型数据,而无需显式地在JSP页面中声明或初始化这些变量。 总的来说,《EL手册》是Java EE...

    popt-static-1.13-7.el6.x86_64.rpm

    popt-static-1.13-7.el6.x86_64.rpm

    JS中如何引用EL表达式

    因此,如果我们直接在 JavaScript 文件中使用 EL 表达式,是不会生效的。这是因为 EL 表达式需要在服务端执行,而 JavaScript 文件是在客户端执行的。 那么,如何在 JavaScript 中引用 EL 表达式呢?一种解决方案是...

    EL6001串口通信指南_EL6001实现串口通讯_

    在本文中,我们将深入探讨如何使用EL6001设备实现串口通信,特别是将其作为发送端,将PLC(可编程逻辑控制器)相关数据发送到接收端。串口通信是一种广泛应用于工业自动化、物联网设备以及嵌入式系统中的通信方式,...

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    在JSP页面开发过程中,EL(Expression Language)表达式是一种用于简化数据访问的语法,通过它可以方便地访问Java EE环境中JSP页面的隐含对象和JavaBeans组件。当EL表达式被错误地当作字符串处理而不是被解析时,会...

    EL表达式使用文档,方便快速使用EL表达式.pdf

    EL 表达式还可以从域中取出数据,相当于使用 request.getParameter()、request.getParameterValues()、param、paramValues 等方法来获取请求参数和请求头信息。 在 EL 表达式中,还有 11 个内置对象,可以用于简化...

    EL基本手册

    EL隐含对象是EL中预定义的一些对象,它们可以直接在EL表达式中使用,无需在Java代码中声明。这些对象包括request、response、session、application等,它们对应于JSP中的内置对象,提供了访问Web应用特定范围对象的...

Global site tag (gtag.js) - Google Analytics