jsp自定义标签 <dict:select... 选择标签和数据字典
2014-04-09 21:09
253 查看
jsp自定义标签,用于项目便捷开发。在实际项目开发中,我们大多数时候会采用数据字典来储存项目中一些数据,比如性别、国际、类型等,用数据字典存储很方便,因此在数据库中添加一张数据字典表t_dict_value,有做过的项目中采用两张表进行数据字典的管理,个人在设计数据字典的时候感觉一张表也够用了。
1.看建表语句:
2.我的自定义标签是基于数据字典表使用的,当然后续业务中有需要也可以***特定的自定义标签,接下来开始自定义标签,首先写一个DictSelectTag类,代码如下:
3.再写一个DictLabelTag类用于显示字典中的值,代码如下:
4.接下来配置tld文件,代码如下:dict.tld:
5.接下来在jsp页面里引入标签:
<%@taglib prefix="dict" uri="http://www.tljc.com/dict_tag" %>
这样便可以在jsp页面里使用定义的标签了:
<dict:select defaultValue="true" name="GJ" id="GJ" dictName="GJ" cssClass="form-control"/>
前提是要在字典表里加上“GJ”这条数据。
1.看建表语句:
CREATE TABLE `t_dict_value` ( `id` varchar(36) NOT NULL, `dict_name` varchar(36) default NULL, `item_code` varchar(36) default NULL, `item_desc` varchar(36) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `item_code` (`item_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf-8;
2.我的自定义标签是基于数据字典表使用的,当然后续业务中有需要也可以***特定的自定义标签,接下来开始自定义标签,首先写一个DictSelectTag类,代码如下:
package com.infopatent.juangetljc.web.controller.core; import java.io.IOException; import java.util.List; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.lang3.StringUtils; import com.infopatent.juangetljc.core.DictValue; public class DictSelectTag extends TagSupport { private String dictName; private boolean defaultValue; private String value; private String name; private String id; private String cssClass; private String styleClass; private String multiple; private String onChange; public String getCssClass() { return cssClass; } public void setCssClass(String cssClass) { this.cssClass = cssClass; } public String getStyleClass() { return styleClass; } public void setStyleClass(String styleClass) { this.styleClass = styleClass; } public String getMultiple() { return multiple; } public void setMultiple(String multiple) { this.multiple = multiple; } public String getOnChange() { return onChange; } public void setOnChange(String onChange) { this.onChange = onChange; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getDictName() { return dictName; } public void setDictName(String dictName) { this.dictName = dictName; } public boolean isDefaultValue() { return defaultValue; } public void setDefaultValue(boolean defaultValue) { this.defaultValue = defaultValue; } @Override public int doEndTag() throws JspException{ DictValue dict = new DictValue(); List<DictValue> dict_list = dict.getRepository().findByProperty(DictValue.class,"dictName",dictName); JspWriter out = pageContext.getOut(); StringBuffer sb = new StringBuffer(); sb.append("<select name='"+this.getName()+"' id='"+this.getId()+"'"); if(!StringUtils.isEmpty(this.getCssClass())){ sb.append("class=\"" + this.getCssClass() + "\" "); } if(!StringUtils.isEmpty(this.getStyleClass())){ sb.append("style=\"" + this.getStyleClass() + "\" "); } if(!StringUtils.isEmpty(this.getMultiple())){ sb.append("multiple=\"" + this.getMultiple() + "\" "); } if(!StringUtils.isEmpty(this.getOnChange())){ sb.append("onchange=\"" + this.getOnChange() + "\" "); } sb.append(">"); if(this.isDefaultValue()){ sb.append("<option value=''>--请选择--</option>"); } for(DictValue dc:dict_list){ if(dc.getItemCode().equals(this.getValue())){ sb.append("<option value='"+dc.getItemCode()+"' selected='selected'>"); }else{ sb.append("<option value='"+dc.getItemCode()+"'>"); } sb.append(dc.getItemDesc()+"</option>"); } sb.append("</select>"); try { out.write(sb.toString()); } catch (IOException e) { // TODO Auto-generated catch block throw new JspException(e); } return TagSupport.EVAL_PAGE; } }
3.再写一个DictLabelTag类用于显示字典中的值,代码如下:
package com.infopatent.juangetljc.web.controller.core; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; import org.springframework.web.servlet.tags.form.OptionsTag; import com.infopatent.juangetljc.core.DictValue; public class DictLabelTag extends TagSupport { private String dictName = ""; private String itemCode; public String getDictName() { return dictName; } public void setDictName(String dictName) { this.dictName = dictName; } public String getItemCode() { return itemCode; } public void setItemCode(String itemCode) { this.itemCode = itemCode; } @Override public int doEndTag() throws JspException { DictValue dict = new DictValue(); JspWriter out = pageContext.getOut(); try { out.write(dict.codeToName(getDictName(),getItemCode())); } catch (IOException e) { throw new JspException(e); } return TagSupport.EVAL_PAGE; } }
4.接下来配置tld文件,代码如下:dict.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" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>SPay JSP Form Tag Library</description> <tlib-version>1.0</tlib-version> <short-name>dict</short-name> <uri>http://www.tljc.com/dict_tag</uri> <tag> <description>Renders an HTML 'select' element. Supports databinding to the selected option.</description> <name>select</name> <tag-class>com.infopatent.juangetljc.web.controller.core.DictSelectTag</tag-class> <body-content>JSP</body-content> <attribute> <name>defaultValue</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>dictName</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>id</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>cssClass</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>styleClass</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>multiple</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>onChange</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>itemdesc</name> <tag-class>com.infopatent.juangetljc.web.controller.core.DictLabelTag</tag-class> <body-content>JSP</body-content> <attribute> <description>The Dict Name config in dict_value</description> <name>dictName</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <description>The Dict Code config in dict_value</description> <name>itemCode</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
5.接下来在jsp页面里引入标签:
<%@taglib prefix="dict" uri="http://www.tljc.com/dict_tag" %>
这样便可以在jsp页面里使用定义的标签了:
<dict:select defaultValue="true" name="GJ" id="GJ" dictName="GJ" cssClass="form-control"/>
前提是要在字典表里加上“GJ”这条数据。
相关文章推荐
- 解决JSP中文乱码问题
- javascript中对象的创建-原型模式2
- 模式对话框和js操作gridview (Datagrid)
- JavaScript之match()方法讲解
- JavaScript之substring()方法讲解
- 常用验证JS代码基础及实例
- JavaScript之With语句讲解
- js判断
- JavaScript之表单验证讲解
- JavaScript之isNaN()函数讲解
- JavaScript之Throw、Try 、Catch讲解
- javascript (十三) 函数
- js输出语句
- js操作表格操方法,增加,删除行,上移,下移一行选定行
- javascript去掉url的一个参数
- javascript基础知识梳理-Number与String之间的互相转换
- 实例演示 kino.razor (前端 Javascript 模板工具,Razor 风格)的使用
- javascript (十二)对象二
- js中如何判断IE的版本
- js生成Json对象、Json数组