java自定义html标签(JSTL)

  • A+
所属分类:Java
摘要

最近在整JSTL自定义的html标签(JSTL)做一个系统字典的功能,实现下拉框options的内容加载和界面的展示,要求使用JSTL自定义标签,JSTL标签的作用:1、主要是移除JSP中的一些JAVA代码 2、jsp界面代码规范。

最近在整JSTL自定义的标签做一个系统字典的功能,实现下拉框options的内容加载和界面的展示,要求使用JSTL自定义标签库,上面就是作者写这篇文章的背景。

1、下面我们说下自定义标签,自定义标签是JAVAWeb的一部分非常重要核心的功能,我认为主要的作用应该就下面的2点吧:

1)主要是移除JSP中的一些JAVA代码

2)规范JSP代码

java自定义html标签(JSTL)

2、实现自定义标签的步骤

1)新建立一个tld文件

2)编写标签处理类并extends SimpleTagSupport ,在doTag()方法中写实现体

3)界面导入自定义的标签url

3、项目列子部分代码

1)tlb文件说明说明

  1. <? version="1.0" encoding="UTF-8"?>
  2. <taglib xmlns="http://.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
  4.     version="2.0">
  5.     <tlib-version>1.0</tlib-version>
  6.     <!-- 这个标签是指定我们定义标签的简称,好像作用不大 -->
  7. <short-name>yptags</short-name>
  8. <!--jsp界面导入标签的时候要用到很重要,就是该文件的访问路径-->
  9.     <uri>https://www.yinli.org/tag</uri>
  10.     <tag>
  11.         <!-- 定义标签名 -->
  12.         <name>dict</name>
  13.         <!-- 定义标签处理类 -->
  14.         <tag-class>com.os.webapp.jsptag.DictTag</tag-class>
  15.         <!-- 定义标签体为空 -->
  16.         <body-content>empty</body-content>
  17.         <attribute>
  18.             <name>type</name>
  19.             <required>true</required>
  20.         </attribute>
  21.         <attribute>
  22.             <name>value</name>
  23.             <required>false</required>
  24.         </attribute>
  25.         <attribute>
  26.             <name>code</name>
  27.             <required>true</required>
  28.         </attribute>
  29.     </tag>
  30. </taglib>

2)实现doTag()方法

  1. package com.os.webapp.jsptag;
  2. import java..IOException;
  3. import java.util.List;
  4. import javax.servlet.jsp.JspException;
  5. import javax.servlet.jsp.tagext.SimpleTagSupport;
  6. import com.yp.framework.webapp.common.utils.SpringContextUtil;
  7. import com.os.webapp.entity.Dict;
  8. import com.os.webapp.service.sys.DictService;
  9. public class DictTag extends SimpleTagSupport{
  10.     private String type;
  11.     private Object value;  //注:在selOptoin中该值代表默认选择值
  12.     private String code;
  13.     private DictService  dictService = (DictService) SpringContextUtil.getBean("dictService");
  14.     @Override
  15.     public void doTag() throws JspException, IOException {
  16.         String outputString = null;
  17.         if(code == null){
  18.             outputString = "[Params error In Code ]";
  19.         }
  20.         switch (type.toLowerCase()) {
  21.             case "getname":
  22.                 if(value !=null){
  23.                     outputString = this.getName(this.code, this.value);
  24.                 }else{
  25.                     outputString = "[Params error In Value ]";
  26.                 }
  27.             break;
  28.             case "seloption":
  29.                 outputString = this.selOptoin(this.code, this.value);
  30.             break;
  31.             default:
  32.                 outputString = "[Unsupport Type]";
  33.                 break;
  34.         }
  35.         this.getJspContext().getOut().write(outputString);
  36.     }
  37.     /**
  38.      * 获取name
  39.      * @param code
  40.      * @param value
  41.      * @return
  42.      */
  43.     private String getName(String code ,Object value){
  44.         String v = String.valueOf(value);
  45.         return  this.dictService.getName(v, code);
  46.     }
  47.     /**
  48.      * 下拉列表组合
  49.      * @param code
  50.      * @param defaultValue
  51.      * @return
  52.      */
  53.     private String selOptoin(String code ,Object defaultValue){
  54.         String result = "";
  55.         String v =  String.valueOf(value);
  56.         List<Dict> dictList =  this.dictService.getCodeAllDict(code);
  57.         if(dictList == null || dictList.size() <= 0){
  58.             return result;
  59.         }
  60.         for(Dict dict : dictList){
  61.             if(v != null && v.equals(dict.getDictValues())){
  62.                 result += "<option value='"+dict.getDictValues()+"' selected='selected'>"+dict.getDictName()+"</option>";
  63.                 continue ;
  64.             }
  65.             result += "<option value='"+dict.getDictValues()+"'>"+dict.getDictName()+"</option>";
  66.         }
  67.         return result;
  68.     }
  69.     public String getType() {
  70.         return type;
  71.     }
  72.     public void setType(String type) {
  73.         this.type = type;
  74.     }
  75.     public Object getValue() {
  76.         return value;
  77.     }
  78.     public void setValue(Object value) {
  79.         this.value = value;
  80.     }
  81.     public String getCode() {
  82.         return code;
  83.     }
  84.     public void setCode(String code) {
  85.         this.code = code;
  86.     }
  87.     @Override
  88.     public String toString() {
  89.         return "DictTag [type=" + type + ", value=" + value + ", code=" + code + "]";
  90.     }
  91. }

3)导入自定义标签

  1. <%@ taglib prefix="yinli" uri="https://www.yinli.org/tag" %>

4)  界面使用

  1. <!-- 获取该code的全部值和名称,value为是否默认某个值 -->
  2. <yinli:dict type="seloption" code="sys_menu" value="2"/>
  3. <!-- 根据code和值获取显示值 -->
  4. <yinli:dict type="getname" code="sys_menu" value="2"/>

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: