jsp-自定义标签Tag

背景:公司框架好烂啊,据说部门下拉选之类的都没有封装好,还需要写方法(拷贝js,jsp以及后台接口)过去。字典表也没用过。新项目要启动了,准备写一些标签,方便之后使用。所以先写个demo联一下,之后把字典,部门,用户之类的封一个标签。

1.先写个tld文件





    JSTL 1.1 functions library
    JSTL functions sys
    1.1
    sys
    http://java.sun.com/jsp/jstl/functionss

  
    dict
    cn.bszx.base.action.sys.DictTag
    JSP
    
      dictType 
      true
      true
    
    
      dictKey
      true
      true
    
  

其中需要注意的就是标签里面的内容name为标签名,tag-class为实现该标签的class的地址,body-content为jsp意思是接收jsp的所有语法。attribute为标签的属性,我这个标签有两个属性,分别为dictType和dictKey  required意思为是否必填,rtexprvalue意思为能否使用表达式获取值。

2.填写实现该标签的java文件。

public class DictTag extends BodyTagSupport {
        private String dictType;
        private  String dictKey;

    @Override
    public int doStartTag() throws JspException {
        String html = "";
        if("0".equals(dictKey)){
            html = "";
        }else if("1".equals(dictKey)){
            html = "";
        }
        try{
            pageContext.getOut().write(html);
        }catch (Exception e){
            e.printStackTrace();
        }
       return super.doStartTag();
    }

    public String getDictType() {
        return dictType;
    }

    public void setDictType(String dictType) {
        this.dictType = dictType;
    }

    public String getDictKey() {
        return dictKey;
    }

    public void setDictKey(String dictKey) {
        this.dictKey = dictKey;
    }
}

java代码需要继承BodyTagSupport。填写属性,即标签属性dictType和dictKey。填写属性的get\set方法。重写doStartTag方法,将需要输出的标签按照HTML格式写出来即可。

3.前台引用该标签

导入自定义标签地址,用prefix指代

<%@ taglib prefix="sys" uri="/jsp/tlds/dict.tld"%>

引用的时候即可。页面编译的时候会把其转变

4.使用场景

对于常用的内容可以制作自定义标签来进行使用。比如用户列表,部门列表之类的。这样的话,以后只需要引用标签,就可以了。而不需要每次都编写获取部门信息的ajax

你可能感兴趣的:(前端)