在Controller响应中使用VelocityView或纯文本?

时间:2011-03-01 17:38:06

标签: java spring-mvc velocity

我正在尝试在我的控制器中返回除了json 之外的内容,但我似乎无法让它工作。理想情况下,我想将渲染的速度模板作为纯文本或html返回。

这就是我在控制器中所拥有的:

@RequestMapping( value = "time", headers = "Accept=*/*", method = RequestMethod.GET )
public @ResponseBody
Date getCurrentTime( HttpServletRequest request, HttpServletResponse response ) {
    response.setContentType( "text/plain" );

    return new Date();
}

这是在我的springmvc-servlet.xml中(我知道这不对......但我在这里有点丢失):

<context:component-scan base-package="com.paml.alerter.controller" />

<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="cache" value="true" />
    <property name="prefix" value="" />
    <property name="suffix" value=".vm" />
</bean>

<!-- This bean sets up the Velocity environment for us based on a root path 
    for templates. Optionally, a properties file can be specified for more control 
    over the Velocity environment, but the defaults are pretty sane for file 
    based template loading. -->
<bean id="velocityConfig"
    class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <property name="resourceLoaderPath" value="/WEB-INF/velocity/" />
</bean>

有谁知道如何正确设置?

TIA

1 个答案:

答案 0 :(得分:2)

如果您的方法使用@ResponseBody注释,那么将完全绕过Spring MVC视图层。

如果您对JSON输出不感兴趣,那么@ResponseBody是不合适的 - 只需将其删除,即可使用您的Velocity视图。

如果您需要在JSON和其他View图层之间切换,则应考虑删除@ResponseBody并使用ContentNegotiatingViewResolver代替。有关如何进行设置,请参阅Spring docs