首先jsp页面是这样的:<a href="/EShop/ManagerService/UserServiceAction.action?uid=1
点击后 拦截action进入UserServiceAction
UserServiceAction中的方法:public void updateUser() {

int uid = Integer.valueOf(request.getParameter("uid")) ;
System.out.println("uid:"+uid);
userBiz.updateUserStateById(uid);
try {
response.sendRedirect("/EShop/ManagerPage/UserService.jsp");
} catch (IOException e) {
e.printStackTrace();
}

}biz:
public void updateUserStateById(int id) {
System.out.println("biz_updateUserStateById");
User user = userDao.get(id);
System.out.println("state::"+user.getUstate());
if (user.getUstate().intValue()==1) {
user.setUstate(2);
}else{
user.setUstate(1);
}
userDao.update(user); }dao:
public void update(User user) {
super.update(user);
}下面就不写了  总之 我在测试类中掉用biz是没问题的 
UserBiz biz = (UserBiz) context.getBean("userBiz");
biz.updateUserStateById(2);
而且控制台输出了由hibernate生成的update语句 数据库更新成功  可是到了页面上 debug发现进入dao不生成update语句 而且没有更新数据库郁闷。我是新手 愿高人指点

解决方案 »

  1.   

    这样说吧在test类里 调用biz 数据库更新成功    而页面上通过action调用biz  数据库没有更新 在action中 往biz里传的差数捕获是正确的 和test类中是一样的为啥呢     可能是哪里的问题呢
      

  2.   

    System.out.println("uid:"+uid); 看获取的是数据是否正确打印User user = userDao.get(id);bean的信息看看 是否是你数据库的信息if (user.getUstate().intValue()==1) 看这个判断走进了那个语句里面调用userDao.update(user);之前 先查看下user的信息是否正确我以前碰到的是提交了, 数据库持行了 ,有回滚了  是因为没有配好事务 你按上面的查一趟看看
      

  3.   

    呀 spring里没配置事务    我去试试
      

  4.   

    事务 update  没提交
      

  5.   

    配置 spring 事务。
    配置 txManager tx:advice aop:config 这三个...
      

  6.   

    我感觉跟事务没半毛钱关系,都说了通过测试类执行成功了!难道测试类智能到可以自动提交事务?这样说吧在test类里 调用biz 数据库更新成功 而页面上通过action调用biz 数据库没有更新 在action中 往biz里传的差数捕获是正确的 和test类中是一样的
    可是到了页面上 debug发现进入dao不生成update语句不是很清楚问题所在
      

  7.   


    不懂就不要乱说
    你看看它测试类是怎么获取业务逻辑bean的。
    UserBiz biz = (UserBiz) context.getBean("userBiz");实际web项目中又是怎么来获取的?这两种的事务配置有何关系,你先得弄清楚咯