【问题标题】:how handler mapping works in spring mvc处理程序映射如何在 Spring mvc 中工作
【发布时间】:2014-12-21 13:34:38
【问题描述】:

我是 Spring mvc 的新手。我正在调试如下给出的 mvc 代码

@Controller
@RequestMapping("/register")
public class RegisterController extends BroadleafRegisterController {

@RequestMapping(method=RequestMethod.GET)
public String register(HttpServletRequest request, HttpServletResponse response, Model model,
            @ModelAttribute("registrationForm") RegisterCustomerForm registerCustomerForm) {
        return super.register(registerCustomerForm, request, response, model);
}

@RequestMapping(method=RequestMethod.POST)
public String processRegister(HttpServletRequest request, HttpServletResponse response, Model model,
            @ModelAttribute("registrationForm") RegisterCustomerForm registerCustomerForm, BindingResult errors) throws ServiceException, PricingException {
        return super.processRegister(registerCustomerForm, errors, request, response, model);
}

@ModelAttribute("registrationForm") 
public RegisterCustomerForm initCustomerRegistrationForm() {

return super.initCustomerRegistrationForm();        

}

}   

上面是一个弹簧处理程序类。对于 /register 请求,我认为应该调用 regsister() 方法,但在调用此方法 inintcustomerRegisterationForm() 之前,我不知道为什么以及如何调用此方法。我在谷歌上搜索了这个,但没有找到任何有用的信息。我认为这就像struts2中的拦截器方法。请告诉我们这个方法是怎么调用的

谢谢

【问题讨论】:

    标签: java spring jsp model-view-controller aop


    【解决方案1】:

    根据spring文档

    @ModelAttribute 方法用于使用常用属性填充模型,例如用状态或宠物类型填充下拉列表,或检索像 Account 这样的命令对象以使用它表示 HTML 表单上的数据。 一个控制器可以有任意数量的@ModelAttribute 方法。所有此类方法都在同一控制器的@RequestMapping 方法之前调用。

    这解释了为什么在请求映射方法之前调用 initCustomerRegistrationForm() 方法。

    【讨论】:

      【解决方案2】:

      正在调用 initCustomerRegistrationForm(),因为它是控制器的“模型”。该模型通常总是需要特定表单的获取和发布请求,并表示输入到表单中的数据。

      如果您希望表单预先填充一些数据,那么您可以将该数据添加到“模型”中。 “模型”也是提交到 post 请求然后提交表单的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        相关资源
        最近更新 更多