Springmvc controller获取不到jsp中的数据

今天在练习一个SSM例子中,在最后的数据修改提交的过程中出现了一个有意思的错误,记录下来。


首先是在数据列表中通过点击修改跳转到对应的controller后台函数中,其中传递的是数据对应的id。
如下图:

这里写图片描述

对应的接收方法如下,这里使用的无返回值类型的返回方式:

@RequestMapping(value="/editItems", method=RequestMethod.GET)
        public void editItems(HttpServletRequest request,HttpServletResponse response,Integer id) throws Exception{
            ItemsCustom itemsCustom = itemsService.findItemsById(id);
            request.setAttribute("itemsCustom", itemsCustom);

            request.getRequestDispatcher("/WEB-INF/jsp/editItem.jsp").forward(request, response);;
        }

负责修改数据的conntroller方法:

@RequestMapping("/editItemSubmit")
        public String editItemSubmit(Integer id,ItemsCustom itemsCustom) throws Exception
        {

            System.out.println("id="+id);
            System.out.println("itemsCustom:"+itemsCustom);
            itemsService.updateItems(id,itemsCustom);
            //请求转发
//          return "forward:queryItems.action";

            //重定向
           return "redirect:queryItems.action";
        }

跳转到修改页面后,本以为修改完数据后就好了,但是发现修改完数据后,数据库中的数据并没有发生变化,其中更新数据的函数是通过MyBatis Generator生成的,所以函数是没有问题,可定是在数据的传递过程中出现的问题。

通过syso发现id和itemsCustom中的id并没有传递到controller中

这里写图片描述

但是神奇的地方出现了,如果是id的数据没有传递过来还可以理解,但是itemsCustom对象中id也变成了空值,而对象中其他的数据没有丢失。

对象数据部分丢失我还是第一次遇到,这我就有点慌了 这里写图片描述


通过一步步的数据观察,最后找到问题所在,原来在修改页面的表单提交中

这里写图片描述

在隐藏input中定义的id属性时,用el表达式忘记使用param.XXX来获取传递参数中的id值了,但是具体为什么hidden中的id会替换掉对象中的id的值,这个我查了半天也没有查到,但是我想是因为id值为itemsCustom对象属性值的一部分,所以才会发生空的id值替换itemsCustom中id的数据,导致后面中获取不到id的值无法对数据进行更新。

还是在看EL表达式的时候没有细心看,其中通过EL获取对象值可以看下这篇博客 http://xvshell.iteye.com/blog/762026

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值