JSP自定义标签+数据字典

数据字典

在工作中,数据字典是必不可少的工具。用一张数据字典表来存储键值对,使得项目更具有隐秘性。其他表中的字段值不必再用明文来显示,可用字典表的键值来存储。同时,字典表方便我们去查询每一个编码值所对应的真实值,大大方便了我们的工作。

字典表

为方便学习,这里给出我用到的字典表

/*==============================================================*/
/* Table: DICT                                               */
/*==============================================================*/
CREATE TABLE DICT
(
   ID                   BIGINT NOT NULL AUTO_INCREMENT,
   STATE                VARCHAR(3) NOT NULL DEFAULT '0',
   DATA_KEY             VARCHAR(10),
   DATA_VALUE           VARCHAR(50),
   TYPE_CODE            VARCHAR(50),
   TYPE_NAME            VARCHAR(50),
   ORDER_NUM            INT,
   REMARK               VARCHAR(200),
   CREATIME             DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
   CREATE_USER_ID       INT,
   UPDATIME             DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   UPDATE_USER_ID       INT,
   PRIMARY KEY (ID)
);

ALTER TABLE DICT COMMENT '字典表';

这是执行后的数据表
在这里插入图片描述
增加几条数据用于测试
在这里插入图片描述

jsp自定义标签

为什么数据字典要用到jsp自定义标签呢?因为我们其他表里存的是编码值,如果页面查询的话还要后台查询字典表,这样每个查询接口都要加上查询字典表的代码,实在不方便。于是,我们可以设置自定义标签,通过自定义标签将编码值自动转化为真实值,减少我们的代码量。

在WEB-INF目录下添加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><!-- 代表标签库的版本号 -->
  <jsp-version>1.2</jsp-version><!-- 代表jsp的版本 -->
    <short-name>dictTag</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>option</name>
        <tag-class>com.gzjw.persist.utils.DictTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>  
               <name>defaultValue</name>  
            <required>false</required>  
            <rtexprvalue>true</rtexprvalue>  
        </attribute>  
    <attribute>  
            <name>value</name>  
            <required>false</required>  
            <rtexprvalue>true</rtexprvalue>  
    </attribute>
    <attribute>
        <name>code</name>
        <required>true</required>  
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
        <name>name</name>
        <required>false</required>  
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
        <name>id</name>
        <required>false</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>
    
</taglib>

添加tld文件所对应的java文件DictTag.java

public class DictTag extends RequestContextAwareTag   {
	@Autowired
	DictRps dictRps;
    private String code;
    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 getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
    
    public boolean isDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(boolean defaultValue) {
        this.defaultValue = defaultValue;
    }
    
    

	@Override
	protected int doStartTagInternal() throws Exception {
		 Dict dict = new Dict();
	    	DictRps dictRps =(DictRps)this.getRequestContext().getWebApplicationContext().getBean(DictRps.class);
	        List<Dict> dict_list = dictRps.findByTypeCodeAndState(Dict.STATE_NORMAL, code);
	        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(Dict dc:dict_list){
	            if(dc.getDataKey().equals(this.getValue())){
	                sb.append("<option value='"+dc.getDataKey()+"' selected='selected'>");
	            }else{
	                sb.append("<option value='"+dc.getDataKey()+"'>");
	            }
	            sb.append(dc.getDataValue()+"</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;
	}
    
}


页面上使用刚刚定义的JSP自定义标签

<%@ page language="java" contentType="text/html; charset=utf-8"
 pageEncoding="UTF-8"%>
 <%@ taglib uri="http://www.tljc.com/dict_tag" prefix="dictTag" %>
               <select class="selectpicker form-control my-select" id="search-type"  >
              	  <option value="">请选择类型</option>
                  <dictTag:option code="EARLY_WARN_STATE" />
              </select> 

以上就是JSP自定义标签+数据字典的全部内容,如有问题可以一起进行讨论。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值