jsp自定义标签 之 继承TagSupport类实现 jsp自定义标签开发
1、继承TagSupport,写一个tld文件
2、直接写一个tag文件,在jsp中引用(现在经常用到的)
第一种:
a、创建一class DictTag,继承TagSupport,并重写doStartTag与doEndTag方法
public class DictTag extends TagSupport {
StringBuffer optionStr = new StringBuffer();
//该属性是用户在页面使用该自定义标签时,属性所对应的值(可以根据情况在此定义,并提供get/set)
private String category;
private String display_name;
public String getCategory() {
return category;
}
public void setCategory(String category) {
this .category = category;
}
public String getDisplay_name() {
return display_name;
}
public void setDisplay_name(String display_name) {
this.display_name = display_name;
}
//本例中是拼出来的死数据(实际运用中这些数据是要从数据库动态取出来的)
@Override
public int doStartTag() throws JspException {
// 假设的一个Dict集合
// List<Dict> dictList = new ArrayList<Dict>();
//下面的步骤就是开始拼出自定义标签了
//注意:这里的select标签的属性 name 和 id 都是动态得到的(根据用户在页面中应用到此标签时,给它设置的属性)
optionStr.append("<SELECT NAME=" + getCategory() + "ID="
+ getCategory() + ">");
// 具体的options项,将通过数据表取出来,然后循环放入option
if (null != getCategory() && !"".equals(getCategory())) {
if (("GENDER").equals(getCategory())) {
optionStr.append("<OPTION VALUE=");
optionStr.append("1");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
optionStr.append(">");
optionStr.append("male");// 这里对应SEA_DICT表中display_name
optionStr.append("</OPTION>");
optionStr.append("<OPTION VALUE=");
optionStr.append("2");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
optionStr.append(">");
optionStr.append("famale");// 这里对应SEA_DICT表中display_name
optionStr.append("</OPTION>");
optionStr.append("<OPTION VALUE=");
optionStr.append("3");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
optionStr.append(">");
optionStr.append("unknown");// 这里对应SEA_DICT表中display_name
optionStr.append("</OPTION>");
/*这里的是假设以后从数据库中拿数据,就只用写一遍了
* for (Dict dict : dictList) {
* optionStr.append("<OPTION VALUE=");
* optionStr.append(dict.getDictValue());//
* 这里到时候换成从SEA_DICT对象中取出来的dict_value optionStr.append(">");
* optionStr.append(dict.getDisplayName());//
* 这里对应SEA_DICT表中display_name optionStr.append("</OPTION>"); }
*/
} else if (("STATUS").equals(getCategory())) {
optionStr.append("<OPTION VALUE=");
optionStr.append("1");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
optionStr.append(">");
optionStr.append("valid");// 这里对应SEA_DICT表中display_name
optionStr.append("</OPTION>");
optionStr.append("<OPTION VALUE=");
optionStr.append("2");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
optionStr.append(">");
optionStr.append("invalid");// 这里对应SEA_DICT表中display_name
optionStr.append("</OPTION>");
}
}
return super.doStartTag();
}
@Override
public int doEndTag() throws JspException {
// 结束的时候把最后的尾标签加上
optionStr.append("</SELECT>");
try {
pageContext.getOut().println(optionStr.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.doEndTag();
}
}
b、在WEB-INF目录下建一个tld文件来定义tag,如下:
<?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>html</short-name>
//需要多少个tag就在此定义多少个
<tag>
<name>dict</name>
<tag-class>com.tags.DictTag</tag-class>
<body-content>JSP</body-content>
//下面的attribute表示,定义的标签有三个属性
<attribute>
<name>category</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>dict_value</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>display_seq</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
c、自定义标签都写好了以后需要在web.xml中声明,非常简单,只需配置一下
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/custom_defined</taglib-uri>
<taglib-location>/WEB-INF/custom_defined.tld</taglib-location>
</taglib>
</jsp-config>
更多阅读
淘宝店铺装修 之如何用代码实现隐藏导航页 淘宝店铺导航栏代码
打开自己的装修页面(应该木有不懂的吧)打开导航页的编辑——显示设置,输入以下代码代码如下:.skin-box-bd{background:none repeat scroll 0 0 #FFFFFF;}.skin-box-bd .menu-list{background:none repeat scroll 0 0 #FFFFFF;}.ski
《羊之歌》真人版剧情介绍 银魂真人版 剧情
《羊之歌》真人版剧情介绍片 名:《羊之歌》类 型:恐怖片产 地:日本主 演:小栗旬加藤夏希美波 铃木一真
《海天英雄传之九鼎》测评 海天英雄传单机版
游戏名称: 海天英雄传之九鼎 游戏类型: 武侠玄幻RPG 开发公司: 逸海情天运 营 商: 诺亚信息 运营状态: 封测 官方网站: http://www.herogame.cn/账号注册地址/来源:新浪网游评测团【测试机器的配置】CPU:奔腾4 1.7G内存:256*2 SDRAM显卡:GeFor
宝宝营养食谱 1岁半--2岁宝宝食谱之二(粥类篇) 2岁半宝宝营养食谱
1岁半--2岁宝宝食谱之二(粥类篇)01蔬菜牛肉粥原料:牛肉--40克,米饭--1/4碗,菠菜--1棵,肉汤--1/2杯,土豆、胡萝卜、洋葱--1/5个,盐--若干制法:(1) 准备牛肉精肉并磨碎。(2) 将菠菜、胡萝卜、洋葱、土豆炖熟并捣碎。(3) 将米饭、蔬菜和肉末放入锅
柳宗元三戒之一:黔之驴
黔无驴,有好事者船载以入。至则无可用,放之山下。虎见之,庞然大物也,以为神。蔽林间窥之,稍出近之,慭慭然,莫相知。 他日,驴一鸣,虎大骇,远遁;以为且噬己也,甚恐。然往来视之,觉无异能者,益习其声,又近出前后,终不敢搏。稍近,益狎,荡倚冲冒,驴不胜怒