码迷,mamicode.com
首页 > 其他好文 > 详细

修改<s:a>标签所对应的源码

时间:2015-06-12 19:35:25      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

让页面调用的这个标签不是struts2的,而是自己抄系统的。同包同名的标签。

技术分享

直接点击会进入对应的tld文件。

技术分享

技术分享

或者从jar包里面找tld文件的方式。

技术分享

技术分享

找到tld文件没用,关键是要改对应的java源码。

技术分享

ctrl+shift+t找到对应的源码。

技术分享

找到源码

技术分享

新建一个和源码一样的包名和类名

这样子classpath下面就会有完全相同的两个类,最后系统调用哪个类就要看谁先被加载,因为class字节码只加载一次,所以谁先加载后就固定不变了。所以先找到谁就用谁。而classpath下面是优先加载代码,找不到了才去lib下找jar包看看有没有要的类,也就是说新建一个一样的类之后,系统就会自动用自己新建的这个。

技术分享

类源码找不doEndTag这个类,那么就在父类,我新建的类要重写doEndTag来实现自己要的功能。

技术分享

@Override
	public int doEndTag() throws JspException {
		// 获取当前登录的用户
		User user = (User) pageContext.getSession().getAttribute("user");
		if (user == null) {
			throw new RuntimeException("没有登录用户!");
		}

		// 获取所需要的权限URL(在action属性值中,但需要处理一下)
		String privUrl = "/" + action;

		// 根据权限决定是否显示超链接
		if (user.hasPrivilegeByUrl(privUrl)) {
			return super.doEndTag(); // 输出<a>标签,并继续执行此标签后面的JSP代码
		} else {
			return BodyTagSupport.EVAL_PAGE; // 没有输出<a>标签,继续执行此标签后面的JSP代码
		}
	}




修改<s:a>标签所对应的源码

标签:

原文地址:http://my.oschina.net/u/2356176/blog/466115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!