標籤:
JSP中的代碼越來越多,冗餘的內容自然也就多了,往往一個很小的改動你需要去改動N個頁面,工作量大不說,還容易出錯。今天帶你徹底解決這個問題!
tips:
- 圖片點擊放大
本文介紹的是jsp:tag中的一般使用方式,另外一種叫做:jsp:tld,兩者同時使用並不衝突。我們習慣T們稱作頁面控制項,通常一個項目中這兩者都會使用到。
- jsp:tag主要做頁面進行邏輯處理後顯示,最後的效果就是你可以給T一些參數,T會處理後把產生的結果顯示在頁面中。舉個栗子:<c:if>,<c:for>,<c:set> 都是這樣實現的,不信你ctrl點進去看看唄。
- jsp:tld會映射到一個具體的類的方法,最後的效果就是你可以在頁面上寫個標籤就可以把資料庫的資料顯示到頁面中。舉個栗子:<sec:authorize>,<shiro:hasRole>,不信你再試試。。。。哈哈哈哈
- 顯示只是其中一種用法,你可以根據你的業務情境和腦洞去想T可以有多少種用法,因為這個標籤屬於你。
- tld在本篇中並沒有去介紹T的使用方式,以後可以補上:[JSP]tld在項目中的應用
1.建立Tag檔案
我的習慣是先在WEB-INF下建立一個tag檔案夾,再按照功能的不同,或者模組的不同劃分再劃分一個檔案夾。比如:WEB-INF/tags/layout
再建立我的Tag。比如:***.tag
<%-- Created by IntelliJ IDEA. User: ta0477 Date: 16/7/20 Time: 16:47 To change this template use File | Settings | File Templates.--%><%@ tag language="java" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!--對象--><%@ attribute name="nowSitet" type="com.wttech.tciss.jsxy.core.vo.statistics.ShutdownSite" required="false" description="目前時間節點temp"%><%@ attribute name="shutdownSitest" type="java.util.List" required="false" description="年度列表資料temp"%><!--屬性名稱--><%@ attribute name="selectName" type="java.lang.String" required="false" description="選擇框Name"%><%@ attribute name="selectId" type="java.lang.String" required="false" description="選擇框Id"%><%@ attribute name="selectDes" type="java.lang.String" required="false" description="選擇框文字描述"%><!--商務邏輯: 做法:將一個對象和集合複製給另外一到另外一對屬性中去 目的:防止控制設定的參數名稱與tag使用的參數名不統一的問題--><c:if test="${null!=nowSitet&&null!=shutdownSitest}"> <c:set var="nowSite" scope="request" target="nowSite" value="${nowSitet}"/> <c:set var="shutdownSites" scope="request" target="shutdownSites" value="${shutdownSitest}"/></c:if><th class="r" width="116">${not empty selectDes?selectDes:"年度資訊"}:</th><td width="220"> <select id="${not empty selectId?selectId:‘shutdownSiteId‘}" name="${not empty selectName?selectName:‘shutdownSiteName‘}" class="form-control w210px"> <c:forEach var="site" items="${shutdownSites}"> <c:choose> <c:when test="${v.id==nowSite.id}"> <option value="${site.id}" selected>${site.year}</option> </c:when> <c:otherwise> <option value="${site.id}">${site.year}</option> </c:otherwise> </c:choose> </c:forEach> </select></td>
2.使用Tag檔案
我這裡的需求是這樣:很多頁面都需要加年度選項來查詢資料,這些資料都來自於我的後台資料庫中(這個需求用tld更合適一些,我就是想舉個栗子不許噴我),前台展示的方式都是使用select來展示。
我先在common.jsp中加入我的jsp:tag
<!--顯示控制項tag--><%@ taglib prefix="layout" tagdir="/WEB-INF/tags/layout" %>
在頁面中使用我的jsp:tag
<layout:shudownsitelist selectId="shutdownSIteID" selectName="shutdownSIteID"/>
最後的效果:一個載入好資料的下拉選項框。
- 如果其他地方需要這個內容我只需要將上面代碼再複製一行到其他頁面中即可,
- 如果哪天因為需求的變化,頁面的顯示效果需要修改,我找到我的tag修改完畢後所有使用這個控制項的地方都被修改了。
希望這篇文章對你有所協助,幫我點個贊吧。!!!!
歡迎你來和我交流學習。
原創禁止轉載!!!!!!
[JSP]tag在項目中的應用