让页面调用的这个标签不是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代码
		}
	} 
 
 
 
 
原文:http://my.oschina.net/u/2356176/blog/466115