当前位置: 代码迷 >> J2EE >> Jsp自定义标签访问struts2+spring+hibernate有关问题
  详细解决方案

Jsp自定义标签访问struts2+spring+hibernate有关问题

热度:87   发布时间:2016-04-22 01:44:27.0
Jsp自定义标签访问struts2+spring+hibernate问题
我想使用Jsp自定义标签来通过struts2+spring+hibernate框架来访问数据库,在struts2+spring+hibernate中通过如下代码访问数据库:
Java code
public class TestAction extends ActionSupport{    ......    WebApplicationContextUtils.getRequiredWebApplicationContext().getBean("testDao");}

上面的代码在struts2+spring+hibernate中运行很正常。

现在我想通过Jsp自定义标签来访问struts2+spring+hibernate框架,从而获得数据,代码如下:
Java code
public class TestTag extends TagSupport{   public int doStartTag() throws JspException{       ......       WebApplicationContextUtils.getRequiredWebApplicationContext().getBean("testDao");   }}


当我运行这个JSP自定义标签时,系统出错:
Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException

WebApplicationContextUtils.getRequiredWebApplicationContext().getBean("testDao");//引起空指针异常

有什么办法能使用JSP自定义标签来访问struts2+spring+hibernate框架来获得数据?

------解决方案--------------------
给你个例子
Java code
public class XxxTag extends RequestContextAwareTag {  //覆盖doStartTagInternal方法  protected int doStartTagInternal() throws Exception {      this.getRequestContext().getWebApplicationContext().getBean("beanName");        }}
------解决方案--------------------
在标签中可以通过pageContext得到servletContext
Java code
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());XxxService service = (XxxService)ctx.getBean("beanName");
  相关解决方案