基于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

你可能感兴趣的:(基于SpringMVC,${param.code}导致EL表达式无法成功取值的解决方法)