1、自定义方法标签
引入方式示例:
写法示例:
1 <?xml version="1.0" encoding="UTF-8"?>
2
3
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
6 version="2.0">
7
8 JSTL 1.1 functions library
9 JSTL functions sys
10 1.1
11 fns
12 http://java.sun.com/jsp/jstl/functionss
13
14
15
16
17 获取字典对象列表
18 getDictList
19 com.sdyy.base.sys.utils.DictUtils
20 java.util.List getDictList(java.lang.String)
21 ${fns:getDictList(typeCode)}
22
23
24
25 获取字典对象列表
26 getDictListJson
27 com.sdyy.base.sys.utils.DictUtils
28 java.lang.String getDictListJson(java.lang.String)
29 ${fns:getDictListJson(typeCode)}
30
31
32
33
34 对象变json
35 toJSONString
36 com.alibaba.fastjson.JSON
37 java.lang.String toJSONString(java.lang.Object)
38
39
function-class就是该方法的实体所在类路径,
function-signature就是该方法的方法名,值得一提的是,这个方法必须是个static方法。
example就是使用方法示例
2、通过jsp自定义标签
如此 tags目录下的sys目录下的jsp形式的tag就会自动被加载,标签jsp写法示例:
1
2
3
4
5
6
7
8
9
10 请选择...
11
12
13 ${dict.TEXT}14
15
16
如此,jsp名就是标签名,例如这个jsp叫 select.jsp,那么它的用法就是
3、通过tld文件和java代码自定义元素标签
引入方式和1相同,写法示例如下:
1 <?xml version="1.0" encoding="UTF-8"?>
2 "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
4
5 1.0
6 2.0
7 bgt
8
9 http://www.sdyy.tag
10
11 hasUrlPerm
12 com.sdyy.common.tags.HasUrlPermissionTag
13
14 link
15 false
16 true
17 java.lang.String
18 示例:acApplication/forMain.do
19
20
21
22
A、【判断标签】HasUrlPermissionTag标签是一个判断标签,通过该标签来决定标签包裹的内容是否显示,写法如下:
1 packagecom.sdyy.common.tags;2
3
4
5 importjavax.servlet.http.HttpServletRequest;6 importjavax.servlet.jsp.JspException;7 importjavax.servlet.jsp.tagext.BodyTagSupport;8
9 importcom.sdyy.common.spring.interceptor.PermissionInterceptor;10 /**
11 *12 * @ClassName: HasUrlPermissionTag13 * @Description: 根据url判断权限标签14 *@author: liuyx15 * @date: 2015年12月21日上午11:15:3216 */
17 public class HasUrlPermissionTag extendsBodyTagSupport {18
19 private String link;//acApplication/forMain.do
20
21 @Override22 public int doStartTag() throws JspException { //在标签开始处出发该方法
23
24 HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();25 //获取session中存放的权限26
27 //判断是否有权限访问
28 if(PermissionInterceptor.isOperCanAccess(request, link)) {29 //允许访问标签body
30 return BodyTagSupport.EVAL_BODY_INCLUDE;//返回此则执行标签body中内容,SKIP_BODY则不执行
31 } else{32 returnBodyTagSupport.SKIP_BODY;33 }34
35 }36
37 @Override38 public int doEndTag() throwsJspException {39 returnBodyTagSupport.EVAL_BODY_INCLUDE;40 }41
42 publicString getLink() {43 returnlink;44 }45
46 public voidsetLink(String link) {47 this.link =link;48 }49
50 }
在JSP中的使用方式:
B、【控件标签】,这种标签直接返回一个控件,不过是通过java代码生成的控件内容,写法示例:
1 packagecom.sdyy.common.tags;2
3 importjava.io.IOException;4 importjava.util.ArrayList;5 importjava.util.List;6
7 importjavax.servlet.jsp.JspTagException;8 importjavax.servlet.jsp.JspWriter;9 importjavax.servlet.jsp.tagext.BodyTagSupport;10
11 /*import com.sdyy.base.ac.ac_permission.model.AcPermission;*/
12
13 public class ButtonUrlTag extendsBodyTagSupport {14 private static final long serialVersionUID = -7811902545513255473L;15
16
17 //标签属性用户名
18 private String user = null;19 //标签属性操作url
20 private String url = null;21 //标签属性 js方法
22 private String jsmethod = null;23 //标签属性image 按钮图片
24 private String image = null;25 //标签属性 alt 提示
26 private String alt = null;27 //标签属性操作value 按钮文本
28 private String value = null;29
30
31
32
33 /*标签初始方法*/
34 public int doStartTag() throwsJspTagException{35 return super.EVAL_BODY_INCLUDE;36 }37
38
39 /*标签结束方法*/
40 public int doEndTag() throwsJspTagException{41 pageContext.getSession();42 Boolean b = false;43 List list = newArrayList();44 /*AcPermission p = new AcPermission();*/
45 /*JDBCHibernate jdbca = new JDBCHibernate();*/
46 try{47 /*list = jdbca.getHaveURLByUsernameList(user);*/
48 } catch(Exception e1) {49 //TODO Auto-generated catch block
50 e1.printStackTrace();51 }52 for(int i = 0;i < list.size(); i++){53 /*p = (AcPermission) list.get(i);*/
54 if(1==1) {//p.getUrl().trim().equals(url.trim())){
55 b = true;56 //如果jsmethod属性不为null 则把超链接href改为调用js
57 if(jsmethod!=null){58 url =jsmethod;59 }60 }61 }62 JspWriter out =pageContext.getOut();63 if(b){64 try{65 //有权限 显示操作按钮
66 out.println("" + value + "");67 } catch(IOException e) {68 e.printStackTrace();69 }70 }71
72 return super.SKIP_BODY;73 }74
75 /*释放资源*/
76 public voidrelease(){77 super.release();78 }79
80
81 publicString getUser() {82 returnuser;83 }84
85
86 public voidsetUser(String user) {87 this.user =user;88 }89
90
91 publicString getUrl() {92 returnurl;93 }94
95
96 public voidsetUrl(String url) {97 this.url =url;98 }99
100
101 publicString getImage() {102 returnimage;103 }104
105
106 public voidsetImage(String image) {107 this.image =image;108 }109
110
111 publicString getAlt() {112 returnalt;113 }114
115
116 public voidsetAlt(String alt) {117 this.alt =alt;118 }119
120
121 publicString getValue() {122 returnvalue;123 }124
125
126 public voidsetValue(String value) {127 this.value =value;128 }129
130 publicString getJsmethod() {131 returnjsmethod;132 }133
134
135 public voidsetJsmethod(String jsmethod) {136 this.jsmethod =jsmethod;137 }138 }