自定义EL函数(入门)

* 自定义EL函数(入门)

* 编写一个类,方法必须是静态方法。
* 在WEB-INF目录下创建tld的文件,配置。
* 选择2.0

* 完成配置



sayHi

cn.itcast.el.ElDemo1

java.lang.String sayHello(java.lang.String)



* 自定义标签
* 实现SimpleTag接口
* 编写一个类,继承SimpleTagSupport类。
* 重写5个方法
* void setJspContext(JspContext pc)
* void setParent(JspTag parent)
* void setJspBody(JspFragment jspBody)  
* void doTag()

* JspTag getParent() 

* 快速入门的步骤(自定义没有标签体的标签)
* 编写一个类,继承SimpleTagSupport。
* 选择重写的方法,doTag()必须有的。
* 需要配置



print

cn.itcast.tag.TagDemo1

empty

* 在JSP页面上,引入标签库
<%@ taglib uri="http://www.itcast.cn/1110/myc" prefix="myc" %>  
* 使用标签了。

* 带有标签主体的标签
* 编写类,继承SimpleTagSupport。
* 重写doTag()
* 获取标签主体对象
JspFragment jf = getJspBody();
jf.invoke(null);
* 配置



out

cn.itcast.tag.TagDemo2

scriptless


元素的可选值有:
empty:不能有标签体内容。
JSP:标签体内容可以是任何东西:EL、JSTL、<%=%>、<%%>,以及html;但不建议使用Java代码段,SimpleTag已经不再支持使用JSP
scriptless:标签体内容不能是Java代码段,但可以是EL、JSTL等;
tagdependent:标签体内容不做运算,由标签处理类自行处理,无论标签体内容是EL、JSP、JSTL,都不会做运算。


* 带有属性的标签
* * 编写类,继承SimpleTagSupport。
* 重写doTag()
* 编写一个属性,属性必须和标签中的属性是相同
* 提供set方法
* 获取标签主体对象
JspFragment jf = getJspBody();
jf.invoke(null);
* 配置



if

cn.itcast.tag.TagDemo3

scriptless



test

true

true

boolean

示例:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web jsptaglibrary_2_1.xsd">
1.0
my
http://www.itcast.cn/tag

sex
cn.itcast.customer.tag.GenderTag
empty

gender
true
true



public class GenderTag extends SimpleTagSupport {
private String gender;
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public void doTag() throws JspException, IOException {
StringBuffer buff = new StringBuffer();
if ("男".equals(gender)) {
buff.append("
");
} else {
buff.append("
");
}
this.getJspContext().getOut().write(buff.toString());
}
}



你可能感兴趣的:(自定义EL函数(入门))