Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring3——来自JDBCTemplate.getQueryForMap()的NullPointerException_Spring_Nullpointerexception_Jdbctemplate_Custom Tag - Fatal编程技术网

Spring3——来自JDBCTemplate.getQueryForMap()的NullPointerException

Spring3——来自JDBCTemplate.getQueryForMap()的NullPointerException,spring,nullpointerexception,jdbctemplate,custom-tag,Spring,Nullpointerexception,Jdbctemplate,Custom Tag,我正在SpringJSP中运行一个自定义标记。我收到以下错误消息 java.lang.NullPointerException com.dao.Poll1DAO.getVotes(Poll1DAO.java:27) com.tags.Poll1Tag.doTag(Poll1Tag.java:23) org.apache.jsp.WEB_002dINF.pages.PollPage_jsp._jspx_meth_myTag1_005fpoll1_005f0(PollPage

我正在SpringJSP中运行一个自定义标记。我收到以下错误消息

java.lang.NullPointerException
    com.dao.Poll1DAO.getVotes(Poll1DAO.java:27)
    com.tags.Poll1Tag.doTag(Poll1Tag.java:23)
    org.apache.jsp.WEB_002dINF.pages.PollPage_jsp._jspx_meth_myTag1_005fpoll1_005f0(PollPage_jsp.java:602)
    org.apache.jsp.WEB_002dINF.pages.PollPage_jsp._jspService(PollPage_jsp.java:195)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1265)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1016)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:781)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
这是Poll1DAO.getVotes

public HashMap<String, Object> getVotes() {
    // following line is line 27, referenced in error message
    return (HashMap<String, Object>) this.getJdbcTemplate().queryForMap(
            "select yes, no from poll1 where id = 1");
}
这是Poll1Tag.doTag

Poll1DAO poll1DAO = new Poll1DAO();

public void doTag() throws JspException, IOException {
    PageContext pageContext = (PageContext) getJspContext();
    boolean foundCookie = cookieFound();

        pageContext.setAttribute("foundCookiePoll1", foundCookie);
        if (foundCookie) {
            // following line is line 23, referenced in error message
            HashMap<String, Object> poll1Votes = poll1DAO.getVotes();
            pageContext.setAttribute("poll1Yes", (int) poll1Votes.get("yes"));
            pageContext.setAttribute("poll1No", (int) poll1Votes.get("no"));
        }
}

如果您使用的是IoC容器,比如Spring的应用程序上下文,那么您永远不应该自己创建托管bean实例。您始终需要从容器中拉出实例,即ApplicationContext。否则,它们将不会使用必要的依赖项进行初始化

现在您应该问的问题是-如何在JSP标记类中获取ApplicationContext实例。答案很简单——看看我说的标准Spring标签是什么意思——去检查那个链接

// Example on how to obtain bean from JSP tag (ignoring context hierarchy)
WebApplicationContextUtils.getRequiredWebApplicationContext(pageContext.getServletContext()).
        getBeansOfType(Poll1DAO.class).values().iterator().next();

我缺少了标记的一部分,即您获取Poll1DAO实例的位置。我刚刚编辑了我的帖子,以包括创建Poll1DAO的位置。它是一个实例变量。