Struts2 自定义下拉框Tag标签

时间:2021-05-20

自定义标签主要包括三个步骤:

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")@Overridepublic 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;}@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><!-- 从数据字典检出一个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"/>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章