java自定义标签需要导入什么jar包_JSP自定义标签/自定义标签打包

有这样一个业务需求:

当我们在编辑某个用户时,需要设置该用户的角色,在转到编辑页面时,就需要自动勾选上该用户已经选择的角色,如下图:

deee7403066dce4eae3d2775328a2f63.png

当我们点击编辑时,会查询用户详细信息,以及角色集合传到编辑页面。

用 标签将所有角色显示出来,那如何勾选该用户已经选择的角色呢,角色是一个集合,用户选择的角色也是一个角色,在遍历角色集合时,还需要查询用户的角色集合中是否有该角色...

以前使用过js,也可以使用,但都不是很方便,而且这种形式与JSP页面不统一,不方便维护。

所以,自定义标签此时就很方便了,就类似于,与页面也整体统一了。

--------------------------------------------------------------自定义标签--------------------------------------------------------------

自定义标签步骤:

1.实现SimpleTag接口/SimpleTagSupport类,重写doTag()方法。

2.编写标签库描述符(tld)文件,在tld文件中对自定义标签进行描述,并放置在WEB-INF/目录下。(如果需要打包的话,在src/下建META-INF文件夹,将tld文件放在该文件夹下)

3.完成以上操作,即可在JSP页面中导入和使用自定义标签。

以上面的需求为例:

第一步:自定义标签类[该标签不仅可以适用于复选框,还可以适用于单选框,下拉列表框等]

1 packagecom.lizhou.mobilescm.tag;2

3 importjava.io.IOException;4 importjava.util.ArrayList;5 importjava.util.Collection;6 importjava.util.Iterator;7 importjava.util.List;8 importjava.util.Map;9

10 importjavax.servlet.jsp.JspException;11 importjavax.servlet.jsp.JspWriter;12 importjavax.servlet.jsp.tagext.SimpleTagSupport;13

14 /**

15 * 自定义标签:根据数据将checkbox标记16 * 17 *@authorbojiangzhou18 * @date 2016年4月10日19 */

20 /**

21 * 22 * 输出checked23 *@authorbojiangzhou24 * @date 2016年5月4日25 */

26 public class CheckedTag extendsSimpleTagSupport {27

28 /**

29 * 要遍历的数据:Map,List,Object[],Object30 */

31 privateObject items;32

33 /**

34 * 当前值35 */

36 privateObject value;37

38 public voidsetItems(Object items) {39 this.items =items;40 }41

42 public voidsetValue(Object value) {43 this.value =value;44 }45

46 public void doTag() throwsIOException {47 //获取输出流

48 JspWriter out = this.getJspContext().getOut();49 try{50 if(items instanceofCollection){51 //items为Map、List类型

52 Collection collection =(Collection) items;53 Iterator it =collection.iterator();54 while(it.hasNext()){55 Object next =it.next();56 if(next.equals(value)){57 out.write("checked");58 break;59 }60 }61 } else if(items instanceofObject[]){62 //items为Object[]数组类型

63 Object[] array =(Object[]) items;64 for(Object o : array){65 if(o.equals(value)){66 out.write("checked");67 break;68 }69 }70 } else{71 //items为一个简单数据类型

72 if(value.equals(items)){73 out.write("checked");74 }75 }76 } catch(Exception e) {77 //如果有异常输出空

78 out.write("");79 }80

81 }82

83 }

第二步:编写tld文件(tld文件可以从其它标签包里复制一份即可),记得放在WEB-INF/下,

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 my jstl 1.0

9 my jstl

10 1.0

11 my

12 http://java.sun.com/jsp/jstl/my

13

14

15

16 out checked17

18 checked

19 com.lizhou.mobilescm.tag.CheckedTag

20 empty

21

22

23 Collection of items to iterate over.24

25 items

26 true

27 true

28

29

30

31 Current value32

33 value

34 true

35 true

36

37

38

39

第三步:在JSP页面使用

引入标签:

使用:

1

2

角色:

3

4

5 />${role.name}6

7

8

--------------------------------------------------------------自定义标签:函数形式--------------------------------------------------------------

上面是使用标签的形式,在项目中还学到一中自定义标签的方式:函数形式

例如格式化Date类型的日期为字符串:

第一步:定义一个工具类,类中有一个格式化日期的静态方法。[好像只能是静态方法]

1 packagecom.lizhou.mobilescm.tool;2

3 importjava.text.SimpleDateFormat;4 importjava.util.Date;5

6 /**

7 * 时间工具8 *@authorbojiangzhou9 * @date 2016年5月4日10 */

11 public classTimeTool {12

13 /**

14 * 将日期格式化成字符串15 *@paramdate 日期16 *@parampattern 格式:yyyy-MM-dd17 *@return

18 */

19 public staticString formatDate(Date date){20 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");21 returnsdf.format(date);22 }23

24 }

第二步:配置tld文件如下:

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 my jstl 1.0

9 my jstl

10 1.0

11 my

12 http://java.sun.com/jsp/jstl/my

13

14

15

16 format the date to string17

18 dateFormat

19 com.lizhou.mobilescm.tool.TimeTool

20 java.lang.String formatDate(java.util.Date)

21

22

23

第三步:使用,在EL表达式中使用beginDate是在request中的一个Date类型日期。

1

--------------------------------------------------------------自定义标签:打包--------------------------------------------------------------

我们可以将自定义的标签打包成一个jar/war包,形成自己的标签库,以便于以后使用。

那么,打包方式如下:

1.在src/目录下建META-INF文件夹,将my.tld文件移动到该文件夹下

2.点击项目,右键 > Export > 选择Java下的JAR file > next >

0fa426644a382e8942f51245eeb0ee81.png

3.然后就可以导入这个标签包使用了

OK!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值