Ответ 1
Возврат null не работает.
Тем временем я нашел решение - мне нужно было аннотировать метод с помощью
@ResponseBody
У меня возникают проблемы с конфигурацией 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>
Возврат null не работает.
Тем временем я нашел решение - мне нужно было аннотировать метод с помощью
@ResponseBody
другим решением было бы вернуть responseEntity, http://www.captaindebug.com/2011/07/using-spring-responseentity-class.html, ведь вам понадобится способ сообщить об ошибке обратно клиенту, и с @ResponseEntity, если возникло исключение spring отображает это на странице html. с ResponseEntity вы можете ответить с помощью http 500, чтобы добавить пользовательские данные.
Я считаю, что вы можете достичь этого, вернув null
.