java.lang.NullPointerException exception dans mon contrôleur de fichier (à l'aide de Spring Hibernate, Maven)

Le problème arrive quand je lance cette partie (@RequestMapping("/SearchStaff")) dans mon fichier de contrôleur. Je peux afficher mon formulaire de recherche successfullt (la demande de la cartographie ci-dessous SearchStaff).

Le problème ne semblait rien avoir à faire avec la veille prolongée. Comme je l'ai commenté l'Hibernation des trucs, mais je suis toujours à l'obtenir.

Si je commente cette ligne

message = staffDAO.searchForStaff(search);

dans mon contrôleur de fichier, il passe par ok. Mais je ne vois rien de mal avec searchForStaff fonction. C'est une fonction très simple qui retourne la chaîne "test" et exécuter le système.out.println("test").

Pouvez-vous s'il vous plaît aider? grâce


Mais c'est l'erreur que j'obtiens:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

root cause

java.lang.NullPointerException
    org.flinders.staffdirectory.controllers.SearchController.showSearchResults(SearchController.java:25)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:601)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

Mon printemps-servlet, xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:component-scan base-package="org.flinders.staffdirectory.controllers" />

    <mvc:annotation-driven />
    <mvc:resources mapping="/resources/**" location="/resources/" />

    <tx:annotation-driven />

    <bean
        id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="/WEB-INF/spring.properties" />
    <bean
        id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}"
        p:username="${jdbc.username}"
        p:password="${jdbc.password}" />
    <bean
        id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
        p:dataSource-ref="dataSource"
        p:configLocation="${hibernate.config}"
        p:packagesToScan="org.flinders.staffdirectory"/>
    <bean
        id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager"
        p:sessionFactory-ref="sessionFactory" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"
        p:viewClass="org.springframework.web.servlet.view.tiles2.TilesView" />
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"
        p:definitions="/WEB-INF/tiles.xml" />

    <bean
        id="staffDAO"
        class="org.flinders.staffdirectory.dao.StaffDAO"
        p:sessionFactory-ref="sessionFactory" />
    <!-- <bean
        id="staffService"
        class="org.flinders.staffdirectory.services.StaffServiceImpl"
        p:staffDAO-ref="staffDAO" />-->
</beans>

C'est mon contrôleur de fichier

package org.flinders.staffdirectory.controllers;

import java.util.List;

//import org.flinders.staffdirectory.models.database.SearchResult;
import org.flinders.staffdirectory.models.misc.Search;
import org.flinders.staffdirectory.dao.StaffDAO;

//import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class SearchController {
    //@Autowired
    private StaffDAO staffDAO;
    private String message;

    @RequestMapping("/SearchStaff")
    public ModelAndView showSearchResults(@ModelAttribute Search search) {

        //List<SearchResult> searchResults =
        message = staffDAO.searchForStaff(search);

        //System.out.println(search.getSurname());
        return new ModelAndView("search/SearchForm", "Search", new Search());
        //return new ModelAndView("search/SearchResults", "searchResults", searchResults);
    }

    @RequestMapping("/SearchForm")
    public ModelAndView showSearchForm() {
        return new ModelAndView("search/SearchForm", "search", new Search());
    }
}

ma classe dao

package org.flinders.staffdirectory.dao;

import java.util.List;

import org.hibernate.SessionFactory;

//import org.springframework.beans.factory.annotation.Autowired;

import org.flinders.staffdirectory.models.database.SearchResult;
import org.flinders.staffdirectory.models.misc.Search;

public class StaffDAO {
    //@Autowired
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public String searchForStaff(Search search) {
        /*String SQL = "select distinct telsumm_id as id, telsumm_parent_id as parentId, telsumm_name_title as title, (case when substr(telsumm_surname, length(telsumm_surname) - 1, 1) = ',' then substr(telsumm_surname, 1, length(telsumm_surname) - 1) else telsumm_surname end) as surname, telsumm_preferred_name as firstname, nvl(telsumm_tele_number, '-') as telephoneNumber, nvl(telsumm_role, '-') as role, telsumm_display_department as department, lower(telsumm_entity_type) as entityType from teldirt.teld_summary where (telsumm_search_surname is not null) and not (nvl(telsumm_tele_directory,'xxx') IN ('N','S','D')) and not (telsumm_tele_number IS NULL AND telsumm_alias IS NULL) and (telsumm_alias_list = 'Y' OR (telsumm_tele_directory IN ('A','B'))) and ((nvl(telsumm_system_id_end,sysdate+1) > SYSDATE and telsumm_entity_type = 'P') or (telsumm_entity_type = 'N')) and (telsumm_search_department NOT like 'SPONSOR%')";

        if (search.getSurname().length() > 0) {
            SQL += " and (telsumm_search_surname like '" + search.getSurname().toUpperCase() + "%')";
        }
        if (search.getSurnameLike().length() > 0) {
            SQL += " and (telsumm_search_soundex like soundex(('%" + search.getSurnameLike().toUpperCase() + "%'))";
        }
        if (search.getFirstname().length() > 0) {
            SQL += " and (telsumm_search_preferred_name like '" + search.getFirstname().toUpperCase() + "%' or telsumm_search_first_name like '" + search.getFirstname() + "%')";
        }
        if (search.getTelephoneNumber().length() > 0) {
            SQL += " and (telsumm_tele_number like '" + search.getTelephoneNumber() + "%')";
        }
        if (search.getDepartment().length() > 0) {
            SQL += " and (telsumm_search_department like '" + search.getDepartment().toUpperCase() + "%')";
        }
        if (search.getRole().length() > 0) {
            SQL += " and (telsumm_search_role like '" + search.getRole().toUpperCase() + "%')";
        }
        SQL += " order by surname, firstname";

        List<Object[]> list = (List<Object[]>) sessionFactory.getCurrentSession().createQuery(SQL).list();

        for(int j=0;j<list.size();j++){
            Object [] obj= (Object[])list.get(j);
            for(int i=0;i<obj.length;i++)
                System.out.println(obj[i]);
        }*/
                System.out.println("test");
             return "test";
    }
}

mon pom.xml

<project
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.flinders.staffdirectory</groupId>
<artifactId>directory-maven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>directory-maven Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<org.springframework.version>3.1.3.RELEASE</org.springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.8.Final</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
<build>
<finalName>directory-maven</finalName>
</build>
</project>
  • Je vois que vous avez commenté l'permettra à l'autowiring dans votre contrôleur pour le domaine de la staffDao. Et vous n'avez pas injecté par xml soit. Que va lancer une exception NullPointerException
  • J'ai commenté Autocâblés que j'essayais de voir ce qui pourrait être le problème. Sans commentaire (et le besoin d'importation), mais encore d'avoir une erreur. voir la capture d'écran de l'erreur (awesomescreenshot.com/035os49b9)
  • changé mon haricot déclaration de staffDAO <bean id="staffDAO" class="org.flinders.staffdirectory.dao.StaffDAO"><property name="sessionFactory" ref="sessionFactory" /></bean>, et toujours la même erreur.
InformationsquelleAutor mrjayviper | 2012-12-06