这个mvc:view-controller行为记录在哪里?

时间:2014-05-21 12:29:24

标签: java spring-mvc

我正在开发一个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,我找不到任何关于会发生什么的事情。

如果有人可以开导我的话,今晚我会睡得更好....ú__ù 非常感谢你!

1 个答案:

答案 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视图名称

相关问题