日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsp tag 自定义标签实现按钮的显示

發布時間:2023/12/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsp tag 自定义标签实现按钮的显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天在一個項目中做了一個最基本的權限管理(標準的權限結構,用戶-角色-菜單),后來需要精確地控制到按鈕就想到了使用自定義標簽(jsp tag)來處理按鈕的顯示與隱藏。

下面是我參考網上的資料自己寫的一個自定義標簽的demo:

首先自定義標簽類:

package com.vanfon.p2p.admin.core;import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport;import com.vanfon.p2p.entity.Admin;public class PermissionTag extends TagSupport {/*** */private static final long serialVersionUID = 4592227792811389132L;@Overridepublic int doStartTag() throws JspException {boolean result = false;HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();// 通過成員變量獲取HttpServletRequest對象Admin admin = (Admin) request.getSession().getAttribute("admin");//獲取登錄到系統的用戶if(admin!=null&&"1".equals(String.valueOf(admin.getIfsuper()))){result = true;}return result? EVAL_BODY_INCLUDE : SKIP_BODY;//EVAL_BODY_INCLUDE代表執行自定義標簽中的內容,SKIP_BODY代表不執行自定義標簽中的內容。} }


在WEB-INF下新建文件夾tlds,然后創建文件shiros.tld

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><description>p2p permission taglib</description><display-name>permission taglib</display-name><tlib-version>1.0</tlib-version><short-name>p2p_admin</short-name><!-- 在taglib.jsp文件中加上如下內容,<%@ taglib uri="<span style="font-family: Arial, Helvetica, sans-serif;">http://vanfon.p2p.cn</span>" prefix="p2p"%> uri中的值必須與標簽<uri></uri>中的值一致,prefix名稱隨便取,取完后JSP那端的前綴名必須與這一致。 --><uri>http://vanfon.p2p.cn/</uri><tag><description>權限校驗標簽,有權限就顯示標簽體的內容,否則不顯示</description><name>permission</name><!-- 里面的內容是JSP文件中標簽里面的<p2p:permission >permission --><tag-class>com.vanfon.p2p.admin.core.PermissionTag</tag-class><!-- JSP文件中的自定義標簽里面的值會傳到PermissionTag類接受,PermissionTag類接受到的值決定是否要顯示JSP文件中自定義標簽的內容。 --><body-content>JSP</body-content><!-- 里面的值代表<p2p:permission>只不能用在JSP中。 --></tag> </taglib>


web,xml中加入:

<jsp-config> <taglib><taglib-uri>http://vanfon.p2p.cn/</taglib-uri><taglib-location>/WEB-INF/tlds/shiros.tld</taglib-location> </taglib> </jsp-config>

最后在jsp中引入標簽:

<%@ taglib prefix="p2p" uri="http://vanfon.p2p.cn/" %>
使用標簽:

<p2p:permission><a href="#" class="easyui-linkbutton" iconCls="icon-add" οnclick="openCreateDialog();">新增</a></p2p:permission><p2p:permission ><a href="#" class="easyui-linkbutton" iconCls="icon-edit" οnclick="openUpdateDialog();">編輯</a></p2p:permission><p2p:permission ><a href="#" class="easyui-linkbutton" iconCls="icon-remove" οnclick="del();">刪除</a></p2p:permission>


然后就ok了,以管理員的身份(ifsuper=1)登錄系統表示可見,以普通用戶的身份(ifsuper!=1)登錄系統按鈕將不可見,以上就是jsp tag自定義標簽最簡單的用法,僅僅只做了是否是管理員的判斷,其實完整的應該是對所有用戶進行一個通用的控制。


擴展

比如:

PermissionTag.java


public class PermissionTag extends TagSupport {private String module;//屬性名必須與JSP自定義標簽的屬性名一樣private String privilege;public String getModule() { return module; }public void setModule(String module) { this.module = module; }public String getPrivilege() { return privilege; }public void setPrivilege(String privilege) { this.privilege = privilege; }@Override public int doStartTag() throws JspException { boolean result = false; Employee employee = this.pageContext.getRequest();//通過成員變量獲取HttpServletRequest對象。 WebUtil.getEmployee((HttpServletRequest)this.pageContext.getRequest());//獲取登錄到系統的員工 SystemPrivilege methodPrivilege = new SystemPrivilege(new SystemPrivilegePK(this.getModule(), this.getPrivilege())); for(PrivilegeGroup group : employee.getGroups()) { if(group.getPrivileges().contains(methodPrivilege)) { result = true; break; } } //EVAL_BODY_INCLUDE代表執行自定義標簽中的內容,SKIP_BODY代表不執行自定義標簽中的內容。 return result? EVAL_BODY_INCLUDE : SKIP_BODY; }}


shiros.tld

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><description>p2p permission taglib</description><display-name>permission taglib</display-name><tlib-version>1.0</tlib-version><short-name>p2p</short-name><!-- 在taglib.jsp文件中加上如下內容,<%@ taglib uri="<span style="font-family: Arial, Helvetica, sans-serif;">http://vanfon.p2p.cn/</span>" prefix="p2p"%> uri中的值必須與標簽<uri></uri>中的值一致,prefix名稱隨便取,取完后JSP那端的前綴名必須與這一致。 --><uri>http://vanfon.p2p.cn/</uri><tag><description>權限校驗標簽,有權限就顯示標簽體的內容,否則不顯示</description><name>permission</name><!-- 里面的內容是JSP文件中標簽里面的<p2p:permission module="admin" privilege="delete">permission --><tag-class>com.vanfon.p2p.admin.core.PermissionTag</tag-class><!-- JSP文件中的自定義標簽里面的值會傳到PermissionTag類接受,PermissionTag類接受到的值決定是否要顯示JSP文件中自定義標簽的內容。 --><body-content>JSP</body-content><!-- 里面的值代表<p2p:permission module="admin" privilege="delete">只不能用在JSP中。 --><attribute><description></description><name>module</name><!-- 里面的值代表JSP文件中自定義標簽 <p2p:permission module="admin" privilege="delete">中的module。--><required>true</required><!-- 里面的值代表在JSP文件中敲入自定義標簽(<p2p:permission)的時候,自定義標簽里面屬性名稱(module)不用手工去寫會自動顯示出來。 --><rtexprvalue>false</rtexprvalue><!-- 里面的值代表JSP文件中自定義標簽的屬性的值不能用EL表達式(${})來表示,如果為true自定義標簽的屬性的值能用EL表達式(${})來表示。 --></attribute><attribute><description></description><name>privilege</name><required>true</required><rtexprvalue>false</rtexprvalue></attribute></tag> </taglib>

jsp中用法:

<p2p:permission privilege="add" module="admin"><a href="#" class="easyui-linkbutton" iconCls="icon-add" οnclick="openCreateDialog();">新增</a></p2p:permission>


參考:http://blog.sina.com.cn/s/blog_a2de16f401016cpc.html


總結

以上是生活随笔為你收集整理的jsp tag 自定义标签实现按钮的显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。