SSH做了一个小例子,save的时候报空指针,主要是hibernate封装jdbc时报空指针,代码如下:
ACTION:[color=red]自动装配不行,我new出来的,有问题么?[/color]UserService userService = new UserService();
UserDao userDao = new UserDao();
User user = new User();
user.setName(name);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
user.setCompany(company);
user.setAddress(address);
user.setCreateTime(new Date());
user.setModificationTime(new Date());
暂时没调用service,dao的代码:
@Repository
public class UserDao extends HibernateDao {
[color=red]HibernateDao里面的save部分代码:[/color]
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
[color=red]spring.xml:[/color]
org.hibernate.dialect.MySQLDialect
true
update
thread
false
true
true
true
50
50
true
<!-- 配置事务管理器 -->
<!-- 支持@Transactional -->
报错的代码就是空指针,没头绪啊:
java.lang.NullPointerException
com.shop.dao.base.HibernateDao.save(HibernateDao.java:672)
com.shop.action.RegisterAction.execute(RegisterAction.java:37)
[color=red]前辈们指导指导。。。愁死我了[/color]
[code="java"]ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);[/code]
手敲的不知道拼错了没有
[quote]自动装配不行,我new出来的,有问题么?UserService userService = new UserService();
UserDao userDao = new UserDao(); [/quote]
自己手动new 出来的对象是不受 Spring 管理的!
也得不到 容器的资源,比如 数据库连接等,
具体写法 可以参见 上面那个仁兄 代码!
为什么不把userService交给spring管理?在spring里把userService userDao给配上
检查页面与你的获取的名称是否一致。
new肯定不行,你既然ssh了,dao就应该让spring帮你托管。
直接交给spring管理,既然是ssh。你这样new出来,页面传过来的值根本就接受不到。
debug一下先,看看你的字段里面是否获得前台传过来的值
UserDao userDao = new UserDao();
。。。瞎了狗眼
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);
正解!