jsp tld 的tag 自定义标签扩展
引入方式
<%@ 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;
/**
*
* @ClassName: HasUrlPermissionTag
* @Description: 根据url判断权限标签
* @author: liuyx
* @date: 2015年12月21日上午11:15:32
*/
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;
/*import com.sdyy.base.ac.ac_permission.model.AcPermission;*/
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();
/*AcPermission p = new AcPermission();*/
/*JDBCHibernate jdbca = new JDBCHibernate();*/
try {
/*list = jdbca.getHaveURLByUsernameList(user);*/
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i = 0;i < list.size(); i++){
/*p = (AcPermission) list.get(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;
}
}
jsp tld 的tag 自定义标签扩展的更多相关文章
- java:jsp: 一个简单的自定义标签 tld
		java:jsp: 一个简单的自定义标签 tld 请注意,uri都是:http://www.tag.com/mytag,保持统一,要不然报错,不能访问 tld文件 <?xml version=& ... 
- java:tag 自定义标签应用
		一,tag类 1.1 TagMy标签类,格式化当前日期并输出 package com.dkt.tag; import java.io.IOException; import java.text.Sim ... 
- jsp的三种自定义标签 写法示例
		1.自定义方法标签 引入方式示例: <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> 写 ... 
- 在jsp页面中使用自定义标签
		在某些场景中,自定义标签可封装大量代码,使页面变得更简洁,标签也可以很方便地在不同页面中实现通用而不必去粘贴大量的js代码.现在把最近做的一个自定义标签在这里总结一下.首先总结一下关于自定义标签的一些 ... 
- JSP带有属性的自定义标签
		新建HelloWelTag类 如何添加jsp-api.jar包 HelloWelTag类详细代码```package bid.zhazhapan.fims.tag;import java.io.IOE ... 
- JSP自定义标签(标签处理器 tld文件)
		标签的形式如下,标签处理器就是处理JSP页面中的标签的属性和内容,定义好之后就跟使用JSTL一样 <标签名 属性名="属性值" 属性名="属性值"> ... 
- JSP自定义标签开发入门
		一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ... 
- 【JSP】自定义标签开发入门
		JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ... 
- JSP自定义标签——传统标签
		同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,J ... 
随机推荐
- ylbtech-LanguageSamples-Porperties(属性)
			ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Porperties(属性) 1.A,示例(Sample) 返回顶部 “属性”示例 本示 ... 
- Wishbone接口Altera JTAG UART
			某些时候,我们在使用Altera FPGA的时候,尤其是涉及SoC系统的时候,通常需要一个串口与PC交互.使用Altera的USB-Blaster免去了外接一个串口.我们可以使用下面所述的IP核通过U ... 
- 一个手绘normal的方法
			https://polycount.com/discussion/98983/how-to-paint-flow-anisotropic-comb-maps-in-photoshop flow map ... 
- lumisoft会将eml后缀格式的附件给解析成文本,这里保存成文件
			MIME_Entity[] attachments = mime.Attachments; foreach (MIME_Entity entity in attachments) { string f ... 
- JAVA NIO 之ByteBuffer的mark、position、limit、flip、reset,get方法介绍
			参考博客:http://blog.csdn.net/sunzhenhua0608/article/details/31778519 先来一个demo: import java.nio.ByteBuff ... 
- liunx系统安装jdk的方法
			1.下载jdk 下载地址: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads ... 
- Word2007中插入公式之后,公式上下有很大的空白
			word 2007 选中一个公式,选择页面布局,点击页面设置右下角的小箭头,在弹出的对话框中,选择文档网格,在网格选项中选择无网格,确定,行距正常了. 选择一个公式,所有的公式行距都会变. Word ... 
- struts2结合poi-3.7实现数据导出为excel
			我们在处理数据的时候,有可能要将数据导出到excel文件中,那么java中是怎么实现的呢?apache开发的poi就可以帮我们实现啦,它也是开源的代码,导入相应的jar包,就可以轻松实现,下面让我们来 ... 
- vue - check-versions.js for shell
			shelljs:https://www.npmjs.com/package/shelljs , 类似linux.unix.powser shell里面的命令. ShellJS是Node.js API之 ... 
- Python—— 性能分析入门指南
			虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 分析程序的性能可以归结为回答四个基本问题: ... 
