1、簡單標簽的使用
1) 使用自定義標簽控制頁面內容(標簽體)是否輸出
public void doTag() throws JspException, IOException {
//JspFragment jf = this.getJspBody();
//jf.invoke(null);
//等價於jf.invoke(this.getJspContext().getOut());
}
2) 簡單標簽控制標簽後的jsp內容是否執行
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
jf.invoke(null);
throw new SkipPageException();
}
3) 自定義標簽實現內容(標簽體)循環輸出
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
for(int i=0; i<5; i++){
jf.invoke(null);
}
}
4) 自定義標簽修改內容(標簽體)——大小寫轉換
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
//為了獲取JspFragment中的內容,將其輸入一個帶緩沖的Writer中,//在獲取字符串
StringWriter sw = new StringWriter();
jf.invoke(sw);
String content = sw.toString().toUpperCase();
JspWriter out = this.getJspContext().getOut();
out.write(content);
}
2、帶屬性的自定義標簽
1)控制標簽體循環輸出指定次數
在標簽處理類中添加屬性變量及其setter方法
private int times;
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
for(int i=0; i<times; i++){
jf.invoke(null);
}
}
public void setTimes(int times) {
this.times = times;
}
在tld文件中增加屬性描述<attribute></attribute>
…
<attribute>
<name>times</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
…
演示<trexprvalue>true</rtexprvalue>
<class3g:mySimpleTag5 times="<%=3+1 %>">
aaaaaaaaa<br>
</class3g:mySimpleTag5>
2)解釋傳參時類型轉換問題,並以Data數據的傳遞演示非基本數據類型的參數傳遞
l 在標簽處理類中添加Data類型成員及其setter方法
private Date date;
public void setDate(Date date) {
this.date = date;
}
l 在tld中添加屬性描述
<attribute>
<name>date</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.Date</type>
</attribute>
l 在jsp中調用
<class3g:mySimpleTag5 times="3" date="<%=new Date() %>">
xxxxxxxx
</class3g:mySimpleTag5>
摘自 耗子的程序員之路