自定義標簽主要包括三個步驟:
1、編寫java類,繼承TagSupport類;
2、創建tld文件,影射標簽名和標簽的java類;
3、jsp頁面引入tld。
例子:自定義下拉框標簽
如果頁面上有下拉選擇框,通常最好的解決方法是使用數據字典,因為有可能多個頁面
使用同一個下拉框,便于后臺統一維護。
自定義Tag類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class DictionaryOptionTaget extends TagSupport { private static final long serialVersionUID = 1L; private String index; // 字段索引 ,頁面上通過標簽屬性傳回來的值 @SuppressWarnings ( "unchecked" ) @Override public int doEndTag() throws JspException { JspWriter jspw = this .pageContext.getOut(); StringBuffer options = new StringBuffer(); /** * 需要查詢數據庫 字段索引為SEX的option內容,這里是寫死 */ if ( "SEX" .equals(index)) { options.append( "<option value=''>-請選擇-</option>" ); options.append( "<option value='1'>男</option>" ); options.append( "<option value='0'>女</option>" ); } try { jspw.println(options); //輸出 } catch (IOException e) { e.printStackTrace(); } return 0 ; } @Override public int doStartTag() throws JspException { return 0 ; } public String getIndex() { return index; } public void setIndex(String index) { this .index = index; } } |
定義tld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" > <taglib> <tlib-version> 1.0 </tlib-version> <jsp-version> 1.2 </jsp-version> < short -name>tagSample</ short -name> <uri>/hellotag</uri> <tag><!-- 從數據字典檢出一個option列表 --> <name>OptionDictionary</name> <tag- class > com.itmyhome.DictionaryOptionTaget </tag- class > <body-content>empty</body-content> <attribute> <name>index</name><!-- 字段索引名 --> <required> true </required><!-- 是否必填 --> <rtexprvalue> false </rtexprvalue><!-- 是否能夠以${}方式傳值 --> </attribute> </tag> </taglib> |
需要注意的是:<rtexprvalue>true</rtexprvalue> 時候,可以使用JSP表達式
表示該自定義標簽的屬性值可以使用 ${} 方式動態傳值。
使用自定義的標簽
1
2
3
4
|
<%@ taglib uri= "/WEB-TAG/platForm.tld" prefix= "PF" %> <select> <PF:OptionDictionary index= "SEX" /> </select> |
頁面輸出:
struts2標簽-下拉列表的兩種寫法
第一種寫法
1
2
|
<s:set name= "selList" value= "# {'1':'質量','2':'成本','3':'進度'}" ></s:set> <s:select list= "#selList" listKey= "key" listValue= "value" name= "columnName" headerKey= "0" headerValue= "--請選擇--" ></s:select> |
第二種寫法:
1
|
<s:select name= "columnName" list= "{'質量','成本','進度'}" headerKey= "-1" headerValue= "--請選擇--" emptyOption= " true" multiple= "false" /> |