- 问题描述:在前端一个显示商品列表页面,通过点击修改按钮跳转到修改页面,因为需要绑定商品列表页面的id属性作为参数进行修改对应商品,但是参数传递却一直无效
/*这里是商品列表页面跳转到修改页面*/
<a href="${pageContext.request.contextPath}/itemEdit.action?id=${item.id}">修改</a>
/*这里是修改页面获取id属性部分代码*/
<form id="itemForm" action="${pageContext.request.contextPath }/updateitem.action" method="post">
<input type="hidden" name="items.id" value="${item.id }"> 修改商品信息:
........
思路:
最开始的想法就是是不是因为超链接导致传输信息丢失,于是在页面利用
session
获取属性并保存,再打断点,获取不到,谷歌浏览器F12模式查看response包体属性为空接下来,写测试代码发现在
controller层
中修改信息部分代码入参id是有的,排除id传参为空的可能- 最后查看springmvc文档,再查看源码发现是利用HashMap进行属性保存获取,猜测
{key,value}
存取错误,于是代码一点点仔细查了一遍,果然是属性名不配对的问题
/*这是controller层处理代码*/
@RequestMapping("/itemEdit")
public String toItemsEdit(Integer id, ModelMap model){
Items items = itemServices.queryItemsById(id);
/**
*这里存取错误,在JSP我是利用value="${item.xx }获取数据,
*而我这里的键值对为{"items",items},不匹配
*/
model.addAttribute("items",items);
return "editItem";
}
/**
* 修改更新信息
*/
@RequestMapping("/updateitem")
public String updateItem(QueryVo vo){
itemServices.updateItemById(vo.getItems());
return "redirect:/itemList.action";
}
- 总结:仅仅是因为将
item
写成items
导致修改bug耗磨时间,终究还是代码不够严谨,小细节没有处理好,谨记以此勉励!!