引入方式
-
<%@ taglib prefix="bgt" uri="/WEB-INF/tlds/bgt.tld" %>
寫法示例如下:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
-
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
-
<taglib>
-
<tlib-version>1.0</tlib-version>
-
<jsp-version>2.0</jsp-version>
-
<short-name>bgt</short-name>
-
<!-- backGroundTag -->
-
<uri>http://www.sdyy.tag</uri>
-
<tag>
-
<name>hasUrlPerm</name>
-
<tag-class>com.sdyy.common.tags.HasUrlPermissionTag</tag-class>
-
<attribute>
-
<name>link</name>
-
<required>false</required>
-
<rtexprvalue>true</rtexprvalue><!-- 是否支援惡劣表達式 -->
-
<type>java.lang.String</type>
-
<description>示例:acApplication/forMain.do</description>
-
</attribute>
-
</tag>
-
</taglib>
A、【判斷标簽】HasUrlPermissionTag标簽是一個判斷标簽,通過該标簽來決定标簽包裹的内容是否顯示,寫法如下:
-
package com.sdyy.common.tags;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.jsp.JspException;
-
import javax.servlet.jsp.tagext.BodyTagSupport;
-
import com.sdyy.common.spring.interceptor.PermissionInterceptor;
-
public class HasUrlPermissionTag extends BodyTagSupport {
-
private String link;// acApplication/forMain.do
-
@Override
-
public int doStartTag() throws JspException { // 在标簽開始處出發該方法
-
HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();
-
//擷取session中存放的權限
-
//判斷是否有權限通路
-
if (PermissionInterceptor.isOperCanAccess(request, link)) {
-
//允許通路标簽body
-
return BodyTagSupport.EVAL_BODY_INCLUDE;// 傳回此則執行标簽body中内容,SKIP_BODY則不執行
-
} else {
-
return BodyTagSupport.SKIP_BODY;
-
}
-
}
-
@Override
-
public int doEndTag() throws JspException {
-
return BodyTagSupport.EVAL_BODY_INCLUDE;
-
}
-
public String getLink() {
-
return link;
-
}
-
public void setLink(String link) {
-
this.link = link;
-
}
-
}
在JSP中的使用方式:
<bgt:hasUrlPerm link="abc.do"><div>tttttttttttttttttest</div></bgt:hasUrlPerm>
B、【控件标簽】,這種标簽直接傳回一個控件,不過是通過java代碼生成的控件内容,寫法示例:
-
package com.sdyy.common.tags;
-
import java.io.IOException;
-
import java.util.ArrayList;
-
import java.util.List;
-
import javax.servlet.jsp.JspTagException;
-
import javax.servlet.jsp.JspWriter;
-
import javax.servlet.jsp.tagext.BodyTagSupport;
-
public class ButtonUrlTag extends BodyTagSupport {
-
private static final long serialVersionUID = -7811902545513255473L;
-
//标簽屬性使用者名
-
private String user = null;
-
//标簽屬性操作url
-
private String url = null;
-
//标簽屬性 js方法
-
private String jsmethod = null;
-
//标簽屬性image 按鈕圖檔
-
private String image = null;
-
//标簽屬性 alt 提示
-
private String alt = null;
-
//标簽屬性操作value 按鈕文本
-
private String value = null;
-
public int doStartTag() throws JspTagException{
-
return super.EVAL_BODY_INCLUDE;
-
}
-
public int doEndTag() throws JspTagException{
-
pageContext.getSession();
-
Boolean b = false;
-
List list = new ArrayList();
-
try {
-
} catch (Exception e1) {
-
// TODO Auto-generated catch block
-
e1.printStackTrace();
-
}
-
for(int i = 0;i < list.size(); i++){
-
if(1==1) {//p.getUrl().trim().equals(url.trim())){
-
b = true;
-
//如果jsmethod屬性不為null 則把超連結href改為調用js
-
if(jsmethod!=null){
-
url = jsmethod;
-
}
-
}
-
}
-
JspWriter out = pageContext.getOut();
-
if(b){
-
try {
-
//有權限 顯示操作按鈕
-
out.println("<a href='" +url+ "' class='regular'><img src='" + image + "' alt='" + alt +"' />" + value + "</a>");
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
return super.SKIP_BODY;
-
}
-
public void release(){
-
super.release();
-
}
-
public String getUser() {
-
return user;
-
}
-
public void setUser(String user) {
-
this.user = user;
-
}
-
public String getUrl() {
-
return url;
-
}
-
public void setUrl(String url) {
-
this.url = url;
-
}
-
public String getImage() {
-
return image;
-
}
-
public void setImage(String image) {
-
this.image = image;
-
}
-
public String getAlt() {
-
return alt;
-
}
-
public void setAlt(String alt) {
-
this.alt = alt;
-
}
-
public String getValue() {
-
return value;
-
}
-
public void setValue(String value) {
-
this.value = value;
-
}
-
public String getJsmethod() {
-
return jsmethod;
-
}
-
public void setJsmethod(String jsmethod) {
-
this.jsmethod = jsmethod;
-
}
-
}