咱們平常開發中有時候常常遇到一個頁面好多Select下拉框,下拉框的內容都被維護在一張字典表中,而後根據字典類型獲取不一樣的數據做爲下拉列表展現。這樣很繁瑣,每次都要須要寫一堆東西來初始化下拉選項,咱們能夠利用jspTag自定義標籤來完成。css
/** * <p> * <code>DictSelectTag</code> * </p> * 基於JspTag的公共選擇下拉框 * @author jianzhang11 * @version 1.0 * @desc * @Date: 2016/5/18 18:43 * @since 1.0 */ public class DictSelectTag extends TagSupport{ //獲取系統定義的service private BaseDicService baseDicService = SpringContextHolder.getBean("baseDicService"); private String id; private String name; private String value; private String type; /** * 前端CSS樣式 */ private String cssStyle; @Override public String getId() { return id; } @Override public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public void setValue(String value) { this.value = value; } public void setType(String type) { this.type = type; } public void setCssStyle(String cssStyle) { this.cssStyle = cssStyle; } /** * 自定義標籤實現 * @return * @throws JspException */ @Override public int doEndTag() throws JspException { JspWriter out = pageContext.getOut(); List<BaseDic> dicList = baseDicService.findBaseDicsByType(type); StringBuffer sb = new StringBuffer(); sb.append("<select name='"+name+"' id='"+this.getId()+"' class='"+cssStyle+"' >"); sb.append("<option value=''>--請選擇--</option>"); for (BaseDic baseDic : dicList) { if(baseDic.getValue().equals(value)){ sb.append("<option value='"+baseDic.getValue()+"' selected='selected'>"); }else{ sb.append("<option value='"+baseDic.getValue()+"'>"); } sb.append(baseDic.getText()+"</option>"); } sb.append("</select>"); try { out.write(sb.toString()); } catch (IOException e) { e.printStackTrace(); } return TagSupport.EVAL_PAGE; } }
<?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"> <tlib-version>1.0</tlib-version> <short-name>dict</short-name> <uri>http://iflytek.com/dict_tag</uri> <tag> <description>Renders an HTML 'select' element. Supports databinding to the selected option.</description> <name>select</name> <tag-class>com.iflytek.esociety.common.tag.DictSelectTag</tag-class> <body-content>JSP</body-content> <attribute> <name>id</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>type</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>cssStyle</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
<%@taglib prefix="dict" uri="/WEB-INF/tld/dict.tld" %> <dict:select name="hyzk" type="0004" value="${graduates.hyzk}"></dict:select>
簡單三步便可在頁面完成下拉框的渲染,在後臺Service獲取字典表內容的時候建議加上緩存,這樣就不須要屢次查詢數據庫了!前端