自定義標(biāo)簽主要包括三個(gè)步驟:
1、編寫java類,繼承TagSupport類;
2、創(chuàng)建tld文件,影射標(biāo)簽名和標(biāo)簽的java類;
3、jsp頁(yè)面引入tld。
例子:自定義下拉框標(biāo)簽
如果頁(yè)面上有下拉選擇框,通常最好的解決方法是使用數(shù)據(jù)字典,因?yàn)橛锌赡芏鄠€(gè)頁(yè)面
使用同一個(gè)下拉框,便于后臺(tái)統(tǒng)一維護(hù)。
自定義Tag類
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; // 字段索引 ,頁(yè)面上通過標(biāo)簽屬性傳回來的值@SuppressWarnings("unchecked")@Overridepublic int doEndTag() throws JspException {JspWriter jspw = this.pageContext.getOut();StringBuffer options = new StringBuffer();/*** 需要查詢數(shù)據(jù)庫(kù) 字段索引為SEX的option內(nèi)容,這里是寫死*/if ("SEX".equals(index)) {options.append("<option value=''>-請(qǐng)選擇-</option>");options.append("<option value='1'>男</option>");options.append("<option value='0'>女</option>");}try {jspw.println(options); //輸出} catch (IOException e) {e.printStackTrace();}return 0;}@Overridepublic int doStartTag() throws JspException {return 0;}public String getIndex() {return index;}public void setIndex(String index) {this.index = index;}}
定義tld
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglibPUBLIC "-//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><!-- 從數(shù)據(jù)字典檢出一個(gè)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> 時(shí)候,可以使用JSP表達(dá)式
表示該自定義標(biāo)簽的屬性值可以使用 ${} 方式動(dòng)態(tài)傳值。
使用自定義的標(biāo)簽
<%@ taglib uri="/WEB-TAG/platForm.tld" prefix="PF"%> <select><PF:OptionDictionary index="SEX"/></select>
頁(yè)面輸出:
struts2標(biāo)簽-下拉列表的兩種寫法
第一種寫法
<s:set name="selList" value="# {'1':'質(zhì)量','2':'成本','3':'進(jìn)度'}"></s:set><s:select list="#selList" listKey="key" listValue="value" name="columnName" headerKey="0" headerValue="--請(qǐng)選擇--"></s:select>
第二種寫法:
<s:select name="columnName" list="{'質(zhì)量','成本','進(jìn)度'}" headerKey="-1" headerValue="--請(qǐng)選擇--" emptyOption=" true" multiple="false"/>
新聞熱點(diǎn)
疑難解答
圖片精選