public class SecurityFunctions {
private static AclManager aclManager;//使用spring注入 public boolean hasPermission(int userId, String resourceSn, int permission) {
System.out.print("234==========");//这边掉不到
return aclManager.hasPermissionByResourceSn(userId, resourceSn,
permission); }
public void setAclManager(AclManager aclManager) {
SecurityFunctions.aclManager = aclManager;
}
}
my.tld
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
    
  <tlib-version>1.0</tlib-version>
  <short-name>my</short-name>
  <uri>http://www.oa.com/jsp/jstl/functions</uri>
  
  <function>
    <name>hasPermission</name>
    <function-class>com.tc.oa.web.SecurityFunctions</function-class>
    <function-signature>boolean hasPermission(int, java.lang.String,int)</function-signature>
  </function></taglib><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@include file="/common/common.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   </head>
  
  <body>
   <TD height=14 align="left" vAlign=center noWrap>
           
            <c:if test="${my:hasPermission(1,'org',CREATE) }">
            <a href="#" >添加机构信息</a>
            </c:if>
          
            </TD>
      
  </body>
</html>
Caused by: java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstFunction.getValue(AstFunction.java:94)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
at org.apache.jsp.MyJsp_jsp._jspx_meth_c_005fif_005f0(MyJsp_jsp.java:146)
at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:117)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
... 29 more
还有web.xml也配了my.tld的位置
为什呀!

解决方案 »

  1.   

    private static AclManager aclManager;//使用spring注入
    这个可能为空的,没有被注入吧。
      

  2.   

    但是hasp ermission里面的打印语句也没有打印啊!
      

  3.   

    但是hasp ermission里面的打印语句也没有打印啊!
      

  4.   

    解决了哈哈!自定义标签的时候方法都必须是静态的,改为public static boolean hasPermission(int userId, String resourceSn, int permission) {}就ok了。