【问题标题】:Why does @GetMapping method return request param while sending response?为什么@GetMapping 方法在发送响应时返回请求参数?
【发布时间】:2018-08-12 02:30:08
【问题描述】:

我将请求参数作为 POJO 并在方法中什么也不做,但在 jsp 中显示我从请求中获得的参数。为什么方法返回我的对象​​? 此外,当我使用原始类型或字符串时,它不会返回对象并且可以完美运行

控制器

@GetMapping("/ULD_details")
public String ULD_detailGet(ActionError ID){
return "ULD_detail";

JSP

 <tr>
    <td >ULD id</td>
    <td>${actionError.ID}</td>   
</tr>

链接

http://localhost:8080/UCM-controller/ULD_details?ID=1145

【问题讨论】:

    标签: spring jsp spring-mvc pojo getmethod


    【解决方案1】:

    它不会返回您的对象。它返回字符串“ULD_detail”,这是要执行的视图的名称。

    这个视图被执行,并在请求属性(即模型)中找到一个actionError bean,因为Spring documentation about handler methods arguments 说:

    任何其他参数

    如果方法参数与上述任何一个都不匹配,则默认情况下,如果它是简单类型(由 BeanUtils#isSimpleProperty 确定)则解析为 @RequestParam,否则解析为 @ModelAttribute。

    documentation of ModelAttribute 说:

    默认模型属性名称是从声明的属性类型(即方法参数类型或方法返回类型)中推断出来的,基于非限定类名称:例如“mypackage.OrderAddress”类的“orderAddress”

    【讨论】:

    • 谢谢,据我了解,无需返回解析为@ModelAttribute 的参数来查看(JSP)。它始终存在于请求属性中。是真的吗?
    • 你继续使用 return 这个词来表示 wat return 以外的东西。但事实上,ModelAttribute 的全部意义在于暴露模型中的参数。
    • 如果我从 jsp 获取参数作为 ModelAttribute 并在控制器方法中执行某些操作,则无需将该参数设置为 request 以便在 jsp 中显示它作为响应。是的?该参数在请求和响应期间是否存在?
    • 模型属性最终存储在 Http servlet 请求属性中。请求和响应一样,在请求处理的整个过程中都存在,包括在处理该请求和生成响应主体的 JSP 中。您问题中的代码表明了这一点。
    • 感谢解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2019-09-13
    相关资源
    最近更新 更多