Struts2 自定義下拉框Tag標(biāo)簽
自定義標(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è)面上通過(guò)標(biāo)簽屬性傳回來(lái)的值
@SuppressWarnings("unchecked")
@Override
public 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;
}
@Override
public 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 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><!-- 從數(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"/>
相關(guān)文章
Spring Boot使用Spring的異步線程池的實(shí)現(xiàn)
這篇文章主要介紹了Spring Boot使用Spring的異步線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
解決dubbo啟動(dòng)報(bào)服務(wù)注冊(cè)失敗Failed?to?register?dubbo
這篇文章主要介紹了解決dubbo啟動(dòng)報(bào)服務(wù)注冊(cè)失敗Failed?to?register?dubbo問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
如何通過(guò)Java生成一個(gè)隨機(jī)數(shù)
當(dāng)我們需要在Java中生成隨機(jī)數(shù)時(shí),可以借助JDK中提供的Random類來(lái)實(shí)現(xiàn),通過(guò)使用Random類,我們可以輕松地生成各種類型的隨機(jī)數(shù),下面我們就來(lái)看看如何利用Random類生成隨機(jī)數(shù)吧2023-09-09
Java聊天室之使用Socket實(shí)現(xiàn)傳遞對(duì)象
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之使用Socket實(shí)現(xiàn)傳遞對(duì)象功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下2022-10-10
mybatis實(shí)現(xiàn)批量修改-xml方式
這篇文章主要介紹了mybatis實(shí)現(xiàn)批量修改-xml方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解
這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

