自己写的SelectTag

本文介绍了一种在Java Web应用中快速实现下拉选择菜单的方法。通过自定义的SelectTag,开发者能够轻松创建带有默认值及onChange事件的下拉菜单,极大地简化了开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你没有spring的tag或struct的tag,使用我这个做下拉选单,还是很方便的.

<iit:select name= "selectName" items="${selectList}" itemValue = "selectValue" itemLabel = "selectLabel" selectValue="${selectValue}"/>

一个select下拉选单,一行搞定.
可以带onchange事件,带默认值选定
自己觉得使用很方便.


import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.beanutils.BeanUtils;

public class SelectTag extends TagSupport {

/**
*
*/
private static final long serialVersionUID = -9049765299272180960L;

/**
* The {@link Collection}, {@link Map} or array of objects used to generate
* the inner '<code>option</code>' tags.
*/
private Object items;

/**
* The name of the property mapped to the '<code>value</code>' attribute
* of the '<code>option</code>' tag.
*/
private String itemValue;

/**
* The name of the property mapped to the inner text of the '<code>option</code>'
* tag.
*/
private String itemLabel;
private String selectValue;
private String emptyValue;
private String name;
private String id;

private String onchange;

public void release() {
items = null;
itemValue = null;
itemLabel = null;
selectValue = null;
emptyValue = null;
name = null;
id = null;
onchange = null;
}

@SuppressWarnings("unchecked")
public int doEndTag() throws JspException {
JspWriter jspOut = pageContext.getOut();
try {
jspOut.append("<select id=\"" + getId() + "\" name=\"" + name + "\" " + getOnchange() + " >");
jspOut.append("<option value=\"" + getEmptyValue() + "\">Please Select</option>");
if (items != null) {
Collection itemsList = (Collection) items;
for (Iterator iterator = itemsList.iterator(); iterator.hasNext();) {
Object obj = (Object) iterator.next();
Object value = BeanUtils.getProperty(obj, itemValue);
Object label = BeanUtils.getProperty(obj, itemLabel);
if (value != null && value.equals(selectValue)) {
jspOut.append("<option value=\"" + value + "\" selected = \"selected\">" + label + "</option>");
} else {
jspOut.append("<option value=\"" + value + "\">" + label + "</option>");
}

}
}
jspOut.append("</select>");
} catch (Exception e) {
e.printStackTrace();
} finally {
itemValue = null;
itemLabel = null;
selectValue = null;
emptyValue = null;
name = null;
id = null;
onchange = null;
}

return EVAL_PAGE;
}

public String getId() {
if (id == null) {
id = name;
}
return id;
}

public void setName(String name) {
this.name = name;
}

public void setId(String id) {
this.id = id;
}

public void setItems(Object items) {
this.items = items;
}

public void setItemValue(String itemValue) {
this.itemValue = itemValue;
}

public void setItemLabel(String itemLabel) {
this.itemLabel = itemLabel;
}

public void setSelectValue(String selectValue) {
this.selectValue = selectValue;
}

public void setEmptyValue(String emptyValue) {
this.emptyValue = emptyValue;
}

public String getEmptyValue() {
if (emptyValue == null) {
emptyValue = "-1";
}
return emptyValue;
}

public void setOnchange(String onchange) {
this.onchange = onchange;
}

public String getOnchange() {
if (onchange == null) {
return "";
}
return "onchange=\"" + onchange + "\"";

}
}



<tag>
<name>select</name>
<tagclass>com...SelectTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>itemValue</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>itemLabel</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

<attribute>
<name>emptyValue</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

<attribute>
<name>selectValue</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

<attribute>
<name>onchange</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值