1

如果这不是问这个问题的正确论坛,我提前道歉......但我很困惑。

我们在一个新网站中使用 Spring 3.1.1。构建它的团队,嗯,缺乏经验。

我遇到了这段代码:

public String signOut(@ModelAttribute("state") State state, Model model) {
    // useful stuff here
    return "signOut.html";
}

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jspx" />
</bean>

但是,我们创建的 JSP 文件的名称是/WEB-INF/jsp/signOut.jspx(html 不是名称的一部分)。

令我惊讶的是 - 这确实有效。InternalViewResolver/WEB-INF/jsp/signOut.html.jspx按预期返回。

我原以为 Spring 在某些时候无法找到为signOut.html.jspx.

这怎么可能工作?它会造成什么损害?

4

1 回答 1

2

好吧,实际上一切都按设计进行。从控制器中,您可以返回视图名称(如本例所示)、View封装视图名称的实例或ModelAndView同时封装视图和模型。

在您的情况下,String返回值表示视图名称。因此 Spring 使用ViewResolver抽象将视图名称转换为实际的视图文件。和属性已配置prefixsuffix因此您不必从控制器返回完全限定的文件路径。应用前缀和后缀,Spring 在正确的位置找到视图文件。

究竟是什么让你感到惊讶?

于 2012-05-09T19:08:57.887 回答