gpt4 book ai didi

java - DispatcherServlet负责为Handler构造这个数据?

转载 作者:行者123 更新时间:2023-11-30 03:37:08 25 4
gpt4 key购买 nike

我是 Spring MVC 的新手,并浏览了网上的一些教程。

在我的项目下的处理程序类之一中遇到以下代码。

当表单提交给操作 userHistory 时,调用将转到我的下面的处理程序方法

@RequestMapping(value="/userHistory", method=RequestMethod.GET)
public @ResponseBody UserDetails getUserHistory(Model model, HttpServletRequest request, HttpServletResponse response) {
model.addAttribute("userDetail", new userDetail());
}

DispatcherServlet 是否构造空 Model 对象并传递给处理程序方法 getUserHistory?

类似地,当我从 jsp 提交操作“/userDetail”时,我得到填充了所需数据的方法参数“userDetail”对象。

@RequestMapping(value="/userDetail", method=RequestMethod.POST)
public String userDetail(UserDetail userDetail, HttpServletRequest request, HttpServletResponse response, Locale locale)
{}

DispatcherServlet 是执行此拦截器还是其他拦截器?

更新:- JSP 代码片段是

    <form:form id="userForm" action="path/userDetail" method="post" commandName="userDetail">

最佳答案

DispatcherServlet 是否构造空 Model 对象并传递给处理程序方法 getUserHistory?

部分是的,构建一个空模型,并将其传递给 getUserHistory 方法。但它实际上并不是由 DispatcherServlet 完成的,而是 HandlerMethodArgumentResolver 的实现。 (在特定情况下是 ModelMethodProcessor 类)。当方法匹配完成后,在实际调用该方法之前,会发生另一个过程,即参数解析。检查匹配方法的签名,Spring 已知的某些类型的对象将由 Spring 自动解析和注入(inject)。这些类型在文档 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-methods 中定义。检查副标题“支持的方法参数类型”下的列表。所有列出的类型,都有一个注册的HandlerMethodArgumentResolver指导这些对象的创建的实现

DispatcherServlet 是执行此拦截器还是其他拦截器?

根据第一个答案,您可以注册自定义参数解析器。这个great blog article告诉您实现该方案所需了解的所有信息。请注意,您所描述的 UserDetail 也可以是表单支持 bean,其值绑定(bind)到提交表单的输入字段的值,这是一个示例 http://www.codejava.net/frameworks/spring/spring-mvc-form-handling-tutorial-and-example

关于java - DispatcherServlet负责为Handler构造这个数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com