自定义taglib标签

2018-03-01 11:25:27来源:oschina作者:huaizhe人点击

分享

最近在项目过程中遇见了自定义标签这个方法,主要实现了字典式的数据搜索。先在全局文件中定义了某特性属性的开头编码 如: 学期 ,定义开头为 9527然后9527加1即 95271为第1学期,95272为第二学期,一次类推。然后通过自定义标签的方式,在数据库拿到1后和9527进行拼接,在画面进行判断显示当前学期 。换个例子。。。‘特征’的前缀为 12306 123061为帅 123062为丑之类的。。。(举得不太好,但是就是这种用法),我见了觉得很有意思,于是自己简单写了一个很弱鸡的例子。其实在工作中很少会去自定义标签,所以只需大体理解其思想即可,以下只为很浅的举例。

1.首先需要定义一个tld文件(taglib的配置文件),一般选择在web-inf/下目录中建立


2.需要定义xml头信息 <?xml version="1.0" encoding="UTF-8"?> 这个一般貌似好像自带。。。


3.需要引入dtd约束,方便书写代码,下面这个版本可能有点老了,反正能先用着。。。


4.需要设定参数值


1.taglib版本,2.适用jsp版本,3.推荐prefix头,4.jsp中tld文件uri引用时的路径别名。也可以在jsp直接写该tld文件位置来代替这个路径别名1.01.2nmyhttp://oidgeduc.dictionary/display


5.设定tag内容,即画面要调用的方法类似于常用的 c:if 后面的if就是你定义的方法1.设定name属性,即画面方法名,


2.tag-class实现类,即调用你定义的方法时,所做处理的类


3.attribute为参数,参数中,name为参数名,required是否为必填,rtextprvalue是否可以动态指定,即是否可以通过类似于el表达式这样填入变量->oneP=${变量}4.type数据类型


5.具体代码如下: sum com.ntt.tag.taglibService onePtruetruejava.lang.Integer twoPtruetruejava.lang.Integer


6.上述定义完taglib的配置文件后,需要对书写处理类,即tag-class标签中定义的类。


代码如下所示:


public class taglibService extends TagSupport{private Integer oneP;//此处是taglib配置中作为参数传入,会注入到其中private Integer twoP;public int doStartTag() throws JspException {


// 通过pageContext.getRequest()拿到request对象,放入最后的求和值,以便前台取出 pageContext.getRequest().setAttribute("sum", oneP + twoP); return SKIP_BODY; //返回值为SKIP_BODY 表示执行的时候,需要页面等待}


public Integer getOneP() { return oneP;}


public void setOneP(Integer oneP) { this.oneP = oneP;}


public Integer getTwoP() { return twoP;}


public void setTwoP(Integer twoP) { this.twoP = twoP;} }


7.补充:


自定义标签类得继承tagsupport或者simpletagsupport,以下以前者为例。 需要重写他的方法,doStartTag(),一般主要只写这个,表示在读到标签开始执行,返回值为SKIP_BODY 执行的时候,需要页面等待。然后doEndTag为读到结束标签后执行,返回EVAL_PAGE告诉画面继续执行剩余的画面,我这边举例暂时没写后者。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台