在 Spring MVC 中,当请求到来时,DispatcherServlet
指定 HandlerMapping
指示哪个 Controller 应该处理请求。 Controller
处理请求并返回具有指定 View
的模型。
我不知道在那之后发生了什么,当 ViewResolver
开始他的工作时。如果View
已经被Controller
指定了,为什么还要有一个ViewResolver
层呢?它实际上做了什么? View
不应该在 Controller
之前指定或与 Controller
并行指定吗?或者 Controller
应该触发 ViewResolver
层?
最佳答案
ViewResolver
将 View 名称映射到实际 View 。例如:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
当你返回一个字符串时,你在 Controller 方法中告诉 spring,为返回值添加前缀和后缀并加载那个 View ,假设你有
@RequestMapping("/")
public String home() {
return "home";
}
ViewResolver 将带回家并将其更改为 home.jsp
并将查看/WEB-INF/views/以加载 /WEB-INF/views/home.jsp
关于java - 来自 ModelAndView 的 View 与来自 ViewResolver 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41208232/