基于SpringMVC,${param.code}导致EL表达式无法成功取值的解决方法

过程重现

在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>

感想

关于底层知识一定要找机会好好补一下,否则以后可能闹笑话。

参考网址

https://www.xp.cn/b.php/24474.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值