RequestToViewNameTranslator ,
3.Web请求与视图之间的约定
相应Controller处理完当前Web请求之后,会通过ModelAndVi的返回后继流程要使用的逻辑视图名.但通常情况下,我们都是明确指定ModelAndView所返回的逻辑视图名是什么。对于Convention Over Configuratio来说, 这显然是多此一举的. 所以, 要朝着Convention Over Configuration迈进的话,我们就不应该每次去明确指定当前请求对应的逻辑视图名是什么。 可是, 这样的话,ViewResolver如何决定返回哪个视图呢?
坦率地讲,不能从ModelAndView中取得一个逻辑视图名的话, ViewResolver确实无能为力, 它不能凭空造一个视图出来, 或者随便挑一个返回, 而且,ViewResolver接口定义中井不涉及HttpServletRequest, 它显然也无法根据请求的URL来推测可能使用的逻辑视图名是哪个. 为了能够让ViewResolver从请求URL中根据约定提取默认的逻辑视图名,Spring MVC引入了org .springframework.web.servlet .RequestToViewNarneTranslator
.当框架内部不能从ModelAndView中获取可用的逻辑视图名的时候,由RequestToViewNameTranslator
根据约定从当前请求的URL中提取。显然,该接口必定与HttpServletRequest
有所关联,如下所示:
public interface RequestToViewNameTranslator {
@Nullable
String getViewName(HttpServletRequest var1) throws Exception;