转载: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中的函数可以使用
分享到:
相关推荐
表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型...
倍福EL6692在TwinCAT中配置和使用
NULL 博文链接:https://conkeyn.iteye.com/blog/2354644
EL表达式内置的方法 EL表达式自带的方法
popt-static-1.13-7.el6.x86_64.rpm
el el表达式 el使用方法 el简介 详细的el表达式使用方法介绍,免去看视频的麻烦,看完直接能上手
JAVA中的EL表达式大全,可以很快学会其中的使用方法,
在EL-ADMIN官网看了介绍,框架使用了最新技术栈、前后端分离、完全响应式布局、代码生成器......,似乎已经完美....。 EL-ADMIN这个框架在java非常火,后端和前端的技术非常先进,发现缺少一个原生APP,经过一段时间...
popt-static-1.13-7.el6.x86_64 popt-1.13-7.el6.x86_64 2个rpm 包 和依赖包 popt-devel-1.13-7.el6.x86_64 亲测可用
EL表达式详解,包含EL表达式简介,EL语法,EL隐含对象,EL运算符,Functions
关于学习el表达式的使用问题,详细简单,易于学习和理解。
在elementUI中使用el-table自定义完成transfer组件功能。内有注释使用说明
jsp EL调用业务方法
倍福EL5101基本功能使用
易语言程序永久去除_EL_HideOwner方法 首先找到易语言安装目录,然后打开static_lib文件夹,可以看到里面有个krnln_static.lib文件。 我们只需要用其他文件替换下它即可解决易语言免杀功能了。 _EL_HideOwner ...
赠送jar包:jakarta.el-3.0.3.jar; 赠送原API文档:jakarta.el-3.0.3-javadoc.jar; 赠送源代码:jakarta.el-3.0.3-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
EL表达式使用文档,方便快速使用EL表达式
赠送jar包:jakarta.el-3.0.3.jar; 赠送原API文档:jakarta.el-3.0.3-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
倍福串口终端模块资料 Documentation for Serial interface terminals EL6001 (1 channel RS232), EL6021 (1 channel, RS422/RS485) EL6002 (2 channels, RS232), EL6022 (2 channels, RS422/RS485)
elfutils-libelf-devel-static-0.152-1.el6.i686.rpm