欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Struts2 自定义下拉框Tag标签

程序员文章站 2024-03-08 20:09:40
自定义标签主要包括三个步骤: 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 自定义下拉框Tag标签

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"/>