Spring MVC方法中的可选参数

时间:2015-04-20 04:36:35

标签: spring spring-mvc

我正在学习弹簧MVC并在弹簧控制器MVC 3.1中遇到这些方法

ControllerClass(){
  @RequestMapping(....)
  public String show( Model uiModel) {

    return ".....";
}

@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.POST)
public String update(@Valid Contact contact, BindingResult bindingResult, Model uiModel, 
        HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes, Locale locale,
        @RequestParam(value="file", required=false) Part file) {

    if (bindingResult.hasErrors()) {
           ...........
        return ".....";
    }

参数如BindingResult,Model,             HttpServletRequest,RedirectAttributes,Locale,             @RequestParam(value =“file”,required = false)部分是可选的,但我想知道在哪里可以找到这些可选参数,在哪种情况下它可以出现在方法中。

1 个答案:

答案 0 :(得分:0)

参数:

  • BindingResult - 假设您有一个注册表单,并且您将预先验证用户输入,然后您可以使用BindingResult
  • Model - 用户注册后,他想编辑自己的个人资料,然后进入编辑网站,在此网站中,您将显示用户的数据。在这里,您可以搜索用户并将用户对象添加到模型中,在模板中,您可以阅读model - attribute中的值。
  • HttpServletRequest提供请求信息。
  • 来自Spring的
  • @RequestParam(value="file", required=false)
  

用于访问特定Servlet请求参数的带注释参数。参数值将转换为声明的方法参数类型

想象一下,您有一个用户表,您可以编辑其中一个,您可以选择一个条目,然后您可以将userId作为requestparam发送。

有一个类似的属性,它的主要区别是@PathVariable@PathVariable是强制性的。 @RequestParam分别是可选的,因为它存在"后备/默认值"。 @PathVariable是网址的一部分:

@RequestMapping(value = "/{login}/edit", method = RequestMethod.GET)
    public ModelAndView editUserByLogin(@PathVariable("login") final String login, final Principal principal) {}

另外两个我还没用过。