我正在开发一个Spring MVC应用程序,并在 webmvc-config.xml 中找到了这一行:
<mvc:view-controller path="/testView" />
我已经尝试了,我知道当我从浏览器点击 / myTestPath 时,Spring会将请求映射到使用Tiles定义的视图,如下所示:
<definition name="testView" extends="default">
<put-attribute name="body" value="/WEB-INF/views/testPage.jspx" />
</definition>
但我不知道如何以及为什么。 Spring文档说:
“在幕后,mvc:view-controller注册一个ParameterizableViewController,选择一个视图进行渲染”,并显示这个例子:
<!-- Forwards requests to the "/" resource to the "welcome" view -->
<mvc:view-controller path="/" view-name="welcome" />
我理解ParameterizableViewController,一个简单的控制器,它根据viewName属性返回一个命名视图。
但是,如果在声明“mvc:view-controller”行时没有指定viewName,我找不到任何关于会发生什么的事情。
如果有人可以开导我的话,今晚我会睡得更好....ú__ù 非常感谢你!答案 0 :(得分:2)
如果您未指定视图名称,则行为将与指定具有void返回类型的@RequestMapping
方法完全相同:
引用Spring框架文档: http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-ann-return-types
如果方法处理响应本身(通过直接编写响应内容,为此目的声明类型为ServletResponse / HttpServletResponse的参数)或者应该通过RequestToViewNameTranslator隐式确定视图名称(不声明响应),则返回void处理程序方法签名中的参数。)
即名为RequestToViewNameTranslator
的组件尝试根据请求路径确定视图名称。
以下是来自RequestToViewNameTranslator javadoc的一些示例:
http://test:8080/gamecast/display.html -> display
http://test:8080/gamecast/displayShoppingCart.html -> displayShoppingCart
http://test:8080/gamecast/admin/index.html -> admin/index
同样的逻辑将适用于您的情况,/testView
将转换为testView
视图名称