近日TE网络因版本升级而导致很多BUG,我们会尽快让网站恢复稳定运行,非常抱歉给大家带来不便。
职业课程 > 员工信息系统 5 章、部门管理与职位管理模块的开发
客服QQ:1206116161
xiaofan

添加部门时遇到空指针异常,似乎是AbstractDao中的findSession问题

xiaofan 于 2018-05-08 12:31:24 发起求助
(52)
(5)
举报

要点:1.跟着视频做的,到第7个视频“前台JS处理”  2.没有写日志工具类   3.只是对包和类的名字有些修改,部门改为资产状态(AssetState)

问题:输入名称,点击添加部门按钮后,后台报错

Servlet.service() for servlet [springmvc] in context with path [/asset] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException

at fan.service.impl.MainTainServiceImpl.addAssetState(MainTainServiceImpl.java:25)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

报错空指针异常,日志第一条显示MainTainServiceImpl文件的java:25行,addAssetState(相当于视频中的添加部门)有空指针

找到25行代码

进入save(),下图

进入findSession, 点击getCurrentSession(), 发现没有关联源码,感觉和这没关系,但也不知道哪里除了问题


  • _Kiro
    _Kiro - 05月08日 (0)

    把配置文件贴出来看下呢,spring-context.xml配置文件

  • xiaofan
    xiaofan - 05月08日 (0)

    <?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:mvc="http://www.springframework.org/schema/mvc"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 

    http://www.springframework.org/schema/mvc 

    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 

    http://www.springframework.org/schema/context 

    http://www.springframework.org/schema/context/spring-context-3.0.xsd 

    http://www.springframework.org/schema/aop 

    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 

    http://www.springframework.org/schema/tx 

    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">

    <!-- 开启注解 -->

    <mvc:annotation-driven/>

    <!-- 注解扫描包 -->

    <context:component-scan base-package="fan" />

    <!-- 配置文件上传解析器  上传文件不能大于10M-->

        <context:component-scan base-package="org.springframework.web.fileupload" />

    <bean id="multipartResolver"

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <property name="maxUploadSize" value="100000" />

    </bean>

    <!-- 引入外部文件 -->

    <context:property-placeholder location="classpath:config.properties" />

    <!-- 配置C3P0数据库连接池 -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <property name="driverClass" value="${jdbc.driver}"></property>

    <property name="jdbcUrl" value="${jdbc.url}"></property>

    <property name="user" value="${jdbc.username}"></property>

    <property name="password" value="${jdbc.password}"></property>

    <property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>

    <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>

    <property name="minPoolSize" value="${jdbc.minPoolSize}"></property>

    <property name="maxStatements" value="${jdbc.maxStatements}"></property>

    <property name="maxStatementsPerConnection" value="${jdbc.maxStatementsPerConnection}"></property>

    <property name="acquireIncrement" value="${jdbc.acquireIncrement}"></property>

    <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}"></property>

    <property name="autoCommitOnClose" value="${jdbc.autoCommitOnClose}"></property>

    <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}"></property>

    <property name="maxIdleTimeExcessConnections" value="${jdbc.maxIdleTimeExcessConnections}"></property>

    <property name="maxIdleTime" value="${jdbc.maxIdleTime}"></property>

    <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"></property>

    <property name="breakAfterAcquireFailure" value="${jdbc.breakAfterAcquireFailure}"></property>

    </bean>

    <!-- 配置sessionFactory -->

    <bean id="sessionFactory"

    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

    <property name="dataSource" ref="dataSource" />

    <property name="hibernateProperties">

    <props>

    <prop key="hibernate.dialect">${hibernate.dialect}</prop>

    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>

    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>

    <prop key="hibernate.hbm2ddl">${hibernate.hbm2ddl}</prop>

    </props>

    </property>

    <property name="packagesToScan" value="fan.model"></property>

    </bean>

    <!-- 配置事务,采用注解开发方式 -->

    <bean id="txManager"

    class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="nestedTransactionAllowed" value="true"></property>

    <property name="sessionFactory" ref="sessionFactory" />

    </bean>

    <tx:annotation-driven transaction-manager="txManager" />

    </beans>


  • xiaofan
    xiaofan - 05月08日 (0)

    我在写后面的第8节数据列表 后台接口也是报空指针的错误。

    我补充下,我还跳过了第4章中的,用户登录拦截器,系统模块数据列表的相关视频,不知道有什么影响,哎

  • xiaofan
    xiaofan - 05月09日 (0)

    我把报错的assetStateDao.save(),换成打印我传进来的数据,控制台显示是有数据进来的,并不是空,是配置文件的问题吗?


  • xiaofan
    xiaofan - 05月09日 (0)

    问题解决了:new assetStateDao 时候 忘记添加自动注入的@Autowired ,添加了就好了,怪不得报空指针


扫码关注TE官方微博 扫码关注TE官方微博
回复X
举报X