JSP自訂select標籤 字典表資料__JavaSE/JavaEE

來源:互聯網
上載者:User

開發過程中經常會重複用到select 載入字典表中的資料,比如載入職務、學曆等等這些,每次用到都進行單獨擷取然後在前端進行遍曆的話會很麻煩,而且不符合開發原則。因此可以通過自訂標籤的方式進行封裝。舉例 如下:

ynbytag.tld

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"        version="2.1">    <description>YNBY 統一自訂標籤</description>    <display-name>YNBY core</display-name>    <tlib-version>1.1</tlib-version>    <short-name>ynby</short-name>    <tag>        <name>demo</name>        <tag-class>com.rdpm.sysm.service.taglib.DemoTag</tag-class>        <body-content>empty</body-content>    </tag>    <tag>        <!--定義屬性的名稱。每個標籤的是屬性名稱必須是唯一的。-->        <name>selectTag</name>        <tag-class>com.rdpm.sysm.service.taglib.DictSelectTag</tag-class>        <body-content>empty</body-content>        <!--系統編碼-->        <attribute>            <name>systemCode</name>            <!--指定屬性是否是必須的或者可選的,如果設定為false為可選。-->            <required>true</required>            <!--聲明在運行運算式時,標籤屬性是否有效。-->            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--select 的name值-->        <attribute>            <name>selectName</name>            <!--指定屬性是否是必須的或者可選的,如果設定為false為可選。-->            <required>true</required>            <!--聲明在運行運算式時,標籤屬性是否有效。-->            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--value 選中的值-->        <attribute>            <name>value</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--預設選中的值-->        <attribute>            <name>selectedValue</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--選中任意一項時觸發的方法-->        <attribute>            <name>onChange</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--選擇方式 單選/多選-->        <attribute>            <name>multiple</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--select 未選擇時顯示內容 如:"請選擇"或者"所有"等-->        <attribute>            <name>nullName</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--select 未選擇時顯示內容的位置 在頂部還是在底部-->        <attribute>            <name>nullNamePlace</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--是否有下一級-->        <attribute>            <name>hasNext</name>            <required>false</required>            <rtexprvalue>true</rtexprvalue>        </attribute>        <!--上級ID-->        <attribute>            <name>parentId</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>    </tag></taglib>

DictSelectTag.java
 
package com.rdpm.sysm.service.taglib;import com.rdpm.sysm.dao.BaseParameterMapper;import com.rdpm.sysm.entity.BaseParameter;import com.rdpm.sysm.util.SpringContextUtil;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Service;import javax.annotation.Resource;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;import java.io.IOException;import java.util.List;/** * Created by XJM on 2016-07-12. */public class DictSelectTag extends TagSupport {    //額外的一些顯示層的參數    private String cssClass;//樣式類    private String styleClass;//內聯樣式    private String systemCode;//參數系統編碼    private String selectName;//select 的name值    private String nullName;//未選擇時給的提示資訊選項    private String value;//選中的值    private String selectedValue;//選中的值    private String onChange;//改變時調用的方法    private String multiple;//選擇方式 多選/單選    @Override    public int doEndTag() throws JspException {
        //SpringContextUtil 在最下面        BaseParameterMapper baseParameterMapper= (BaseParameterMapper) SpringContextUtil.getBean("baseParameterMapper");        List<BaseParameter> list= baseParameterMapper.selectParamByParamTypeCode(systemCode);        StringBuffer sb = new StringBuffer();        JspWriter out = pageContext.getOut();        sb.append("<select name=\""+this.getSelectName()+"\"");        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(!StringUtils.isEmpty(this.getNullName())){            sb.append("<option value=\"\">--"+this.getNullName()+"--</option>");        }        for(BaseParameter dc:list){            if (dc.getDictValue().equals(this.getSelectedValue())){                sb.append("<option value=\""+dc.getDictValue()+"\" selected>");            }else {                sb.append("<option value=\""+dc.getDictValue()+"\">");            }            sb.append(dc.getDictName()+"</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;    }    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 getSystemCode() {        return systemCode;    }    public void setSystemCode(String systemCode) {        this.systemCode = systemCode;    }    public String getSelectName() {        return selectName;    }    public void setSelectName(String selectName) {        this.selectName = selectName;    }    public String getNullName() {        return nullName;    }    public void setNullName(Str
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.