jsp自定义标签
2014-01-24 15:29
225 查看
下拉列表枚举项有时候初始化比较麻烦,需要去数据库查询每个枚举项放进集合,然后在页面用jstl或者一些前台技术循环放进select ,有时候需要默认一些值,还需要比较确定是否option 是否应该具有selected 属性,所以很是麻烦,所以自定义标签 显得尤为重要。
首先自定义标签需要有以下几个步骤
1.编写tld文件
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0">
<description>nigo jsp tag library</description>
<display-name>nigo</display-name>
<tlib-version>0.1</tlib-version>
<short-name>ng</short-name>
<uri>http://www.jiuqi.com/nigo/jsp-tags</uri>
<tag>
<description>
options using DatadictBean
</description>
<name>options</name>
<tag-class>com.jiuqi.mobile.nigo.web.tags.OptionsTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
mark value
</description>
<name>mark</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
selected key
</description>
<name>selected</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
whether contains 'please select' option, default is true
</description>
<name>addon</name>
<required>false</required>
</attribute>
</tag>
</taglib>
设置标签的一些属性,最主要的是标签的实现类,红色标注的代码
2.jsp引入标签库
<%@ taglib prefix="ng" uri="http://www.jiuqi.com/nigo/jsp-tags"%>
3.实现标签实现类
public class OptionsTag extends TagSupport {
private static final long serialVersionUID = 330784907215740876L;
private String mark;
private String selected;
private String addon;
public String getSelected() {
return selected;
}
public void setSelected(String selected) {
this.selected = selected;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
public String getAddon() {
return addon;
}
public void setAddon(String addon) {
this.addon = addon;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
StringBuffer buffer = new StringBuffer();
int markInt = -1;
try {
markInt = Integer.parseInt(mark);
} catch (NumberFormatException e) {
markInt = -1;
}
if (addon == null || !addon.equals("false")) {
buffer.append("<option value='0'>请选择 </option>");
}
DataDictionaryBean[] beans = DataDictionaryUtils.getInstance().get(
markInt);
if (beans != null) {
for (DataDictionaryBean bean : beans) {
buffer.append("<option ");
buffer.append(" value=\"").append(bean.getCode()).append("\"");
if (selected != null) {
if (String.valueOf(bean.getCode()).equals(selected)) {
buffer.append(" selected=\"selected\"");
}
}
buffer.append(">");
buffer.append(bean.getName());
buffer.append("</option>");
}
}
try {
out.print(buffer.toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
return Tag.SKIP_BODY;
}
public int doEndTag() throws JspException {
return Tag.EVAL_PAGE;
}
}
其实最主要的就是在实现类里面编写好select需要的一些选项的html,在java里面实现东西总是比jsp实现方便的多
这样一来,select的初始化显得简单多了
<select class="selectbor" size="1"
name="mark" style="width: 150px;">
<option value="0">请选择mark名称</option>
<ng:options mark="99" addon="false" selected="${mark }"/>
仅需要一个标签 就可以将下拉列表的所有option收入select下 方便太多了
首先自定义标签需要有以下几个步骤
1.编写tld文件
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0">
<description>nigo jsp tag library</description>
<display-name>nigo</display-name>
<tlib-version>0.1</tlib-version>
<short-name>ng</short-name>
<uri>http://www.jiuqi.com/nigo/jsp-tags</uri>
<tag>
<description>
options using DatadictBean
</description>
<name>options</name>
<tag-class>com.jiuqi.mobile.nigo.web.tags.OptionsTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
mark value
</description>
<name>mark</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
selected key
</description>
<name>selected</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
whether contains 'please select' option, default is true
</description>
<name>addon</name>
<required>false</required>
</attribute>
</tag>
</taglib>
设置标签的一些属性,最主要的是标签的实现类,红色标注的代码
2.jsp引入标签库
<%@ taglib prefix="ng" uri="http://www.jiuqi.com/nigo/jsp-tags"%>
3.实现标签实现类
public class OptionsTag extends TagSupport {
private static final long serialVersionUID = 330784907215740876L;
private String mark;
private String selected;
private String addon;
public String getSelected() {
return selected;
}
public void setSelected(String selected) {
this.selected = selected;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
public String getAddon() {
return addon;
}
public void setAddon(String addon) {
this.addon = addon;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
StringBuffer buffer = new StringBuffer();
int markInt = -1;
try {
markInt = Integer.parseInt(mark);
} catch (NumberFormatException e) {
markInt = -1;
}
if (addon == null || !addon.equals("false")) {
buffer.append("<option value='0'>请选择 </option>");
}
DataDictionaryBean[] beans = DataDictionaryUtils.getInstance().get(
markInt);
if (beans != null) {
for (DataDictionaryBean bean : beans) {
buffer.append("<option ");
buffer.append(" value=\"").append(bean.getCode()).append("\"");
if (selected != null) {
if (String.valueOf(bean.getCode()).equals(selected)) {
buffer.append(" selected=\"selected\"");
}
}
buffer.append(">");
buffer.append(bean.getName());
buffer.append("</option>");
}
}
try {
out.print(buffer.toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
return Tag.SKIP_BODY;
}
public int doEndTag() throws JspException {
return Tag.EVAL_PAGE;
}
}
其实最主要的就是在实现类里面编写好select需要的一些选项的html,在java里面实现东西总是比jsp实现方便的多
这样一来,select的初始化显得简单多了
<select class="selectbor" size="1"
name="mark" style="width: 150px;">
<option value="0">请选择mark名称</option>
<ng:options mark="99" addon="false" selected="${mark }"/>
仅需要一个标签 就可以将下拉列表的所有option收入select下 方便太多了
相关文章推荐
- JSP自定义标签的开发及使用
- jsp自定义标签
- jsp自定义标签实例
- JSP自定义标签---->张国亮总结第一季
- JSP自定义标签:带标签体(body)的标签
- 自定义标签JspFragment类
- jsp自定义标签switch、case、default ---尚未写完
- jsp自定义标签--->张国亮总结心得第四季
- 【JSP】赵雅智_JSP自定义标签_简单标签
- JSP自定义标签
- 使用自定义标签实现JSP页面和代码的分离 - Q.yuhen(转载)
- JSP tag文件配置 自定义标签简单示例
- (转)掌握jsp自定义标签:(二)
- jsp使用自定义标签taglib分页系列——ColumndeleteTag.java
- JSP自定义标签
- JSP自定义标签
- 关于jsp自定义标签的使用jsp报错
- jsp中用自定义标签实现简单的分页
- JSP 自定义标签实现数据精度格式化
- 如何使用jsp自定义标签 JspTag 使用入门