Spring MVC @Controller返回空视图名称是什么意思?


问题内容

我下载了Spring MVC 3 Showcase的代码。一件事使我感到困惑(嗯,不止一个),为什么这个(为简洁而编辑)的样本返回null

@Controller
@RequestMapping("/form")
public class FormController {
    @RequestMapping(method=RequestMethod.POST)
    public String processSubmit(@Valid FormBean form, 
                BindingResult result, 
                WebRequest webRequest, 
                HttpSession session, Model model) {

        if (result.hasErrors()) {
             return null;
        } else {
            session.setAttribute("form", form);
            return "redirect:/form";            
        }
    }
}

问题答案:

如果控制器返回一个空的视图名称,或者声明一个void返回类型,Spring将尝试从请求URL推断视图名称。

在您的情况下,它将假定视图名称为form,然后继续该假设。

它使用的实现(RequestToViewNameTranslator默认实现是)来实现此目的DefaultRequestToViewNameTranslator,而javadoc对此进行了解释,并解释了适用的确切规则。