struts2自定义标签

如何自定义标签
首先要找到定义标签的源代码在哪里?
struts2-core-2.1.8.1.jar包下--》META-INF文件夹下
struts-tags.tld文件
例如我要设置struts2中的<s:a></s:a>的超链接标签
我们的需求是这个标签的内容显示还是不显示,由一个权限来定义(看用户本身有没有访问这个链接的权限)。
如何控制呢?要在它对应的类中进行控制。
   标签类中有两个对应的方法:
   doStartTag()开始标签加载的时候做什么操作 (注意这个方法无法得到标签体)
   doEndTag()结束标签加载的时候做什么操作(用到标签体中的内容要使用该方法)
找到这个标签对应的配置信息:
<name>a</name>
 <tag-class>org.apache.struts2.views.jsp.ui.AnchorTag</tag-class>
这个标签对应的加载类是AnchorTag
我在自己的web项目下定义一个和这个类一模一样的类
   先创建包,包名:org.apache.struts2.views.jsp
                      类名:AnchorTag
 服务器在找的时候会先找我们自己的,找不到才会到外部资源中去找
 创建好类后,根据上面的想法我们在类中定义方法:
 public int doEndTag() throws JspException{
 if(false){
 只需要在此处判断有没有权限就可以了
   
 return super.doEndTag();//表示正常显示该标签,并执行后续代码
 }else{
  return EVAL_PAGE //表示忽略该标签,继续执行后续代码。
 
 }
 
 }

 代码:
 public int doEndTag() throws JspException {
// 当前登录用户
User user = (User) pageContext.getSession().getAttribute("user");
// 当前准备显示的链接对应的权限URL
// >> 在开头加上'/'
String privUrl = "/" + action;
//该类中的action属性就是标签总action中执行的action名,同过这个类来获取
//获取之后添加斜杠和地址符中进行匹配,判断该action是否在user对象中。
//注意传递参数的话需要进行字符串截取
if (user.hasPrivilegeByUrl(privUrl)) {
return super.doEndTag(); // 正常的生成并显示超链接 标签,并继续执行页面中后面的代码
} else {
return EVAL_PAGE; // 不生成与显示超链接 标签,只是继续执行页面中后面的代码
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值