有一段時間沒有發表關於自定義標籤的文章了,今天我向大家介紹一下包含標籤體的標籤的寫法.程式碼如下:
import java.io.IOException;
import java.sql.SQLException;
import java.util.Map;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import com.tianjin.canic.tjeg.dao.JdbcDaoSupport;
//這是一個許可權控制的自定義標籤
public class QxIfTag extends BodyTagSupport {
private JdbcDaoSupport dao;
//定義一個成員變數用於向資料庫查詢許可權
public String code;
//許可權標識
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
//在doStartTag方法中編寫程式碼
@Override
public int doStartTag() throws JspException {
if(dao == null)
this.dao = new JdbcDaoSupport();
//由於父類BodyTagSupport中有一個成員變數 pageContext,我們知道pageContext可以得到jsp中的9大物件,所以得到Session是輕而易舉的事情,我們獲得Session中使用者的ID,然後查詢資料庫來的道這個使用者是否有某一特定的許可權(public String code) 如果有的話會執行標籤替中的程式碼
String admin_id = (String) this.pageContext.getSession().getAttribute(
“ADMIN_ID”);
if (“”.equals(code) && code == null) {
return SKIP_BODY;//跳過標籤體
}
try {
if (“”.equals(admin_id) && admin_id == null)
return SKIP_BODY;//跳過標籤體
List list = this.dao
.queryForList(“SELECT QUANXIAN FROM TJEG_ADMIN WHERE ADMIN_ID = `“
+ admin_id + “`“);
boolean b = false;
for (int i = 0; i < list.size(); i++) {
Map map = (Map) list.get(i);
if(((String)map.get(“QUANXIAN“)).indexOf(code) != -1)
b = true;
}
if (b) {//如果條件滿足
return EVAL_BODY_INCLUDE;//包含標籤體
} else {
return SKIP_BODY;//跳過標籤體
}
} catch (SQLException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
}
在taglib.tld檔案中需要這麼寫,
<tag>
<name>if</name>
<tagclass>com.xxxx.xxxx.utils.QxIfTag</tagclass>
<attribute>
<name>code</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<name>if</name>
<tagclass>com.xxxx.xxxx.utils.QxIfTag</tagclass>
<attribute>
<name>code</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
我們已經寫好配置檔案了,繼續複習一下,看jsp頁面該怎麼寫,
<%@ taglib prefix=”eg” uri=”/WEB-INF/taglib.tld”%>
jsp頁面上要先寫這一行,將taglib.tld檔案引入進來.
然後這樣寫
<eg:if code=”主題業務”>
<a href=”${ctx}/admin/quanchengdaohang/qcdhlb.jsp” target=”rightFrame”>主題業務管理</a>
</eg:if>
<a href=”${ctx}/admin/quanchengdaohang/qcdhlb.jsp” target=”rightFrame”>主題業務管理</a>
</eg:if>
這樣我們的標籤就寫好了.