过程重现
在SpringMVC搭配Hibernate项目中,在后端取到product对象后,使用request.setattribute()方法将product对象传到下一个页面,并使用EL表达式${param.code}接收。但是页面显示为空,重点是没有报错。
我通过request.getAttribute()取值,并打印,发现信息已成功传到当前页面。
错误代码
controller层
@RequestMapping(value = "/editproduct/{pid}", method = {RequestMethod.GET})
public String editProduct(@PathVariable("pid") String pid, HttpServletRequest request) {
ProductDto dto = productService.findProductById(pid);
request.setAttribute("param", dto);
return "edit_duc";
}
jsp页面
<li><label>产品编号</label><span
class="pdtb9 fl" id="productcode">${param.productcode}</span></li>
错误原因
param是jsp自带参数,特别是用EL表达式的时候,${param.*},相对于 request.getParameter("id")
所以在后端request.setAttribute()的时候应该换一个常量名。
正确代码
controller层
@RequestMapping(value = "/editproduct/{pid}", method = {RequestMethod.GET})
public String editProduct(@PathVariable("pid") String pid, HttpServletRequest request) {
ProductDto dto = productService.findProductById(pid);
request.setAttribute("product", dto);
return "edit_duc";
}
jsp页面
<li><label>产品编号</label><span
class="pdtb9 fl" id="productcode">${product.productcode}</span></li>
感想
关于底层知识一定要找机会好好补一下,否则以后可能闹笑话。
本文描述了在SpringMVC与Hibernate结合的项目中,如何避免使用request.setAttribute()时与EL表达式预定义变量param冲突的问题。通过更改属性名称,确保数据正确传递并展示在JSP页面上。
1740

被折叠的 条评论
为什么被折叠?



