Struts2 自定义下拉框Tag标签
程序员文章站
2024-03-09 12:43:47
自定义标签主要包括三个步骤:
1、编写java类,继承tagsupport类;
2、创建tld文件,影射标签名和标签的java类;
3、jsp页面引入tld。
例子...
自定义标签主要包括三个步骤:
1、编写java类,继承tagsupport类;
2、创建tld文件,影射标签名和标签的java类;
3、jsp页面引入tld。
例子:自定义下拉框标签
如果页面上有下拉选择框,通常最好的解决方法是使用数据字典,因为有可能多个页面
使用同一个下拉框,便于后台统一维护。
自定义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; // 字段索引 ,页面上通过标签属性传回来的值 @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
<?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表达式
表示该自定义标签的属性值可以使用 ${} 方式动态传值。
使用自定义的标签
<%@ taglib uri="/web-tag/platform.tld" prefix="pf"%> <select> <pf:optiondictionary index="sex"/> </select>
页面输出:
struts2标签-下拉列表的两种写法
第一种写法
<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>
第二种写法:
<s:select name="columnname" list="{'质量','成本','进度'}" headerkey="-1" headervalue="--请选择--" emptyoption=" true" multiple="false"/>