如果这不是正确的论坛,我会提前道歉......但我很困惑。
我们在新网站中使用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,但它似乎发现它很好!
这怎么可能有效?它会造成什么样的伤害?
答案 0 :(得分:2)
嗯,实际上一切都按设计工作。从控制器中,您可以返回视图名称(在本例中为),View
实例封装视图名称或ModelAndView
封装视图和模型。
在您的情况下,String
返回值表示视图名称。所以Spring使用ViewResolver
抽象将视图名称转换为实际的视图文件。已配置prefix
和suffix
属性,因此您无需从控制器返回完全限定的文件路径。应用前缀和后缀,Spring在正确的位置找到视图文件。
你究竟有什么惊喜?