Spring 3.1控制器返回HTML页面的名称 - 它会起作用吗?

时间:2012-05-09 19:04:11

标签: java spring spring-mvc controller

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

我们在新网站中使用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创建的已编译的JSP servlet,但它似乎发现它很好!

这怎么可能有效?它会造成什么样的伤害?

1 个答案:

答案 0 :(得分:2)

嗯,实际上一切都按设计工作。从控制器中,您可以返回视图名称(在本例中为),View实例封装视图名称或ModelAndView封装视图和模型。

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

你究竟有什么惊喜?