透過前面幾篇,相信對於如何自定義tag應該沒有什麼問題了。不過在JSTL裡面有個特殊的tag,專門用在EL裡面,因此我們稱之為function tag。
我們自己也可以自定義function tag,這樣在使用EL的時候就不會感覺到力不從心。這一篇我們來看看如何自定義function tag。
[Tag] 自定義方法
- 2534
- 0
- 「iThome 第六屆 鐵人賽」
透過前面幾篇,相信對於如何自定義tag應該沒有什麼問題了。不過在JSTL裡面有個特殊的tag,專門用在EL裡面,因此我們稱之為function tag。
我們自己也可以自定義function tag,這樣在使用EL的時候就不會感覺到力不從心。這一篇我們來看看如何自定義function tag。
之前我們介紹的Tag都是以實作interface Tag來達到效果。而Interface Tag有多個method,並且在不同的時候返回不同的值來控制流程。
但是當我們在實際使用的時候,通常來說我們不會需要控制這些流程,我們只會override doEndTag()而已,就為了這個要實作並且返回奇怪的數字看起來是在很麻煩。
因此在jsp 2.x之後,除了支援舊的格式以外,有多增加了一個interface叫做SimpleTag讓我們開發自定義tag的時候更加容易。
這一篇我們來看一下和interface Tag有什麼不一樣。
上一篇介紹了如何繼承TagSupport來更簡單製作自定義tag,還記得之前我們介紹Tag interface的時候提到過的流程,相信有注意到曾經提過我們能夠設定是否能夠有body的內容。
我們這一篇會介紹如何來處理Tag裡面body的部份。
實作Tag的java都可以成為jsp用的tag。不過每一次都需要自己實作Tag很麻煩,因此TagSupport是一個已經實作Tag的java class,讓我們更容易實作tag。
同時我們介紹如何自定義Attribute。
在上一篇我們看到了基本要實作一個tag的方法,相信在過程當中大家對於doStartTag()和doEndTag()差異感到興趣,同時他們回傳的東西到底代表著什麼。
在這一篇我們會在詳細的看一下自定義標籤的執行流程。
我們目前已經看過了JSTL裡面的3個Tag。其實JSTL裡面還有兩個Tag,一個是用來處理XML的Tag,讓你可以對一個XML做類似於XPath的動作。還有一個是對資料庫做動作的tag。
這兩個Tag我跳過了,首先對DB可以做存取的Tag我覺的不應該是JSP頁面做的事情,而是Servlet做。因此我覺的只要知道有這個Tag就好,我個人會儘量不用。至於XML的tag有用,但是其實他和之前介紹core tag非常像,只是在Select是使用類似於xpath的概念去parse xml。因此,如果有需要在去看就可以。
今天,我希望來介紹一下基本自定義Tag所需要注意到的事情。