权限太多,想用简单自定义标签来控制,但遇到一个头疼的问题,不能用@autowird自动注入spring管理的bean,让人恼火;
经过周折,终于解决问题,与大家一起分享,可能不是最好的方法,希望有更好方法的人能推荐给我,谢谢;
下面这样出现空指针异常
package com.bookstore.utils;import com.bookstore.client.user.handler.UserHandler;
import com.bookstore.commons.beans.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;@Component
public class LoginTag extends SimpleTagSupport {@Autowiredprivate UserHandler userHandler;public void doTag() throws JspException, IOException {PageContext context = (PageContext) this.getJspContext();HttpServletResponse response = (HttpServletResponse) context.getResponse();HttpServletRequest request= (HttpServletRequest) context.getRequest();User user = (User) context.getSession().getAttribute("login_user");System.out.println(userHandler);if(user==null){System.out.println("aaaaaaaaaaaaaaaaaaaa");User user1 = userHandler.autologin(request);System.out.println(user1);if(user1==null){System.out.println("BBBBBBBBBBbbbbb");response.sendRedirect(request.getContextPath()+"/client/error/privilege.jsp");}}}
}
而且显示注入成功,点击还能跳转
换一种解决方法,使用下面这样可以解决
PageContext pageContext = (PageContext) this.getJspContext();ServletContext servletContext = pageContext.getServletContext();WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);UserHandler userHandler= (UserHandler) wac.getBean("userHandler");
不明白前边的方法为什么不行?希望有答案的推荐给我,万分感谢;