Подтвердить что ты не робот

Spring Запрос MVC без представления

У меня возникают проблемы с конфигурацией Spring для следующих функций: мне нужно, чтобы запросы на просмотр отображались нормально (визуализировать представление), а запросы службы просто выполнялись без визуализации. Проблема, с которой я сталкиваюсь, заключается в том, что после выполнения контроллера где-то вниз по линии Spring решает, что ModelAndView должен получить экземпляр, даже если метод контроллера ничего не возвращает (void). Это вызывает представление, которое будет отображаться, когда на самом деле я хочу просто ничего не делать, как только контроллер выполнит эту работу. Я уверен, что это должно быть что-то, что я делаю неправильно в конфигурации Spring (моя догадка заключается в том, что она связана с представлением разрешения). Любая помощь по этому поводу ценится. Благодарю.

Вот код:

@Controller
@RequestMapping( "actions" )
public final class ServiceController{
    private static final Logger logger = LoggerFactory.getLogger( ServiceController.class );
    @RequestMapping( value = "/submit.service",method = RequestMethod.POST )
    public void test( @RequestParam( "mail" ) String mail ){
        ServiceController.logger.info( mail );
    }
}

И сервлеты в web.xml:

<servlet>
    <servlet-name>viewServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/viewServlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>viewServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Контекст:

<annotation-driven />
<beans:bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    <beans:property name="resourceLoaderPath" value="/WEB-INF/velocity/" />
</beans:bean>

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

Ответ 1

Возврат null не работает.

Тем временем я нашел решение - мне нужно было аннотировать метод с помощью

@ResponseBody

Ответ 2

другим решением было бы вернуть responseEntity, http://www.captaindebug.com/2011/07/using-spring-responseentity-class.html, ведь вам понадобится способ сообщить об ошибке обратно клиенту, и с @ResponseEntity, если возникло исключение spring отображает это на странице html. с ResponseEntity вы можете ответить с помощью http 500, чтобы добавить пользовательские данные.

Ответ 3

Я считаю, что вы можете достичь этого, вернув null.