封装EL函数:
第一步,做一个类,静态方法
public class Html { public static String transfer(String txt, String cssClass){ //把输入的,&,<>,都给替换后显示出来 txt = txt.replaceAll(""", ""e;" ).replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">"); // 换为p标签,cssclass添加的样式表 txt = txt.replaceAll(" ", "</p><p class'"+cssClass+"'>"); txt = "<p class'"+cssClass+"'>"+txt+"</p>"; return txt; } }
第二步,配置,手动写一个标签描述文件。
在WEB-INF文件夹中新建一个XML.File文件,扩展名更改为tld,选择XML template,完成创建。
taglib是根元素,内容写在<taglib>。。。。</taglib>中间
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
根元素下面写对整个文件的描述:
<description>自定义函数</description> 描述
<display-name>my el function</display-name> 显示
<tlib-version>1.0</tlib-version> 版本
<short-name>fn</short-name> 约定fn就可以
<uri>http://itnba.com/maya/myel</uri> 只是一个唯一标识,引用
<description>自定义函数</description> <display-name>my el function</display-name> <tlib-version>1.0</tlib-version> <short-name>fn</short-name> <uri>http://itnba.com/maya/myel</uri>
后面写对html的配置<function>。
<description>把文本的显示内容改成网页的显示内容</description> 内容描述
<name>transfer</name> 在html中使用的名
<function-class>com.itnba.maya.myel.Html</function-class> com.itnba.maya.myel是第一步做的类的包名,Html是类名
<function-signature>string transfer(java.lang.String, java.lang.String)</function-signature> 代表函数是一个什么样的函数,string是返回类型,transfer是函数名,()中是参数
<example></example>例如可以省略
<function> <description> 把文本的显示内容改成网页的显示内容 </description> <name>transfer</name> <function-class>com.itnba.maya.myel.Html</function-class> <function-signature>string transfer(java.lang.String, java.lang.String)</function-signature> <example> //例如能省略 </example> </function> </taglib>
第三步,现在就可以引用自己封装好的el函数了。
先导一下写好的el函数,
prefix是在${}中用的名,uri是第二步配置中的那个唯一标识
<%@ taglib prefix="html" uri="http://itnba.com/maya/myel"%>
然后写两行同样的代码作为比较,
<h1>haha</h1>
${html:transfer("<h1>haha</h1>","aaa") }
第一行应该显示为一号标题的haha,第二行加入自己写的el函数,应该把<>进行替换,把“”中的内容全部显示出来,如下图;