Используя VelocityView или простой текст в ответе контроллера? - PullRequest
0 голосов
/ 01 марта 2011

Я пытаюсь вернуть содержимое , отличное от 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>

Кто-нибудь знает, как правильно это настроить?

ТИА

1 Ответ

2 голосов
/ 01 марта 2011

Если ваш метод аннотирован @ResponseBody, тогда слой представления Spring MVC будет полностью обойден.

Если вас не интересует вывод JSON, то @ResponseBody неуместен - просто удалите его, и ваши представления Velocity будут использованы.

Если вам нужно переключиться между JSON и другим слоем View, то вам следует рассмотреть возможность удаления @ResponseBody и использования ContentNegotiatingViewResolver. См. Spring docs , чтобы узнать, как это настроить.

...