#java #spring #spring-mvc
#java #весна #spring-mvc
Вопрос:
После обновления до Spring 4.3.3.RELEASE я получаю сообщение об ошибке:
Метод запроса ‘POST’ не поддерживается
Мое приложение является базовым шаблоном, и домашний вид отображается через
<mvc:view-controller path="/" view-name="home.view"/>
Он отлично работает на Spring 4.2.8.
Любой намек на решение проблемы?
Ответ №1:
Мы столкнулись с той же проблемой. Оказывается, в какой-то момент ParameterizableViewController был изменен, чтобы поддерживать только запросы GET и HEAD.
Мы решили эту проблему, заменив определение чем-то вроде этого:
<bean id="homeController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="supportedMethods" value="GET,POST,PUT,DELETE" />
<property name="viewName" value="home.view" />
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<map>
<entry key="/" value-ref="homeController"/>
</map>
</property>
</bean>
По сути, это позволяет вам создавать ParameterizableViewController с любыми поддерживаемыми HTTP-методами, которые вы пожелаете. Второй компонент создает сопоставление так, чтобы путь «/» разрешался для определенного контроллера.
Комментарии:
1. Это кажется хорошим решением. Это работает нормально и позволяет избежать реализации классов контроллеров для простых представлений.
2. Спасибо! Ты спас мне жизнь. Мы обновились некоторое время назад, и никто не заметил, что это изменилось.
Ответ №2:
Поддерживаемые по умолчанию методы ParameterizableViewController — GET, HEAD мы проверяем это с помощью следующего фрагмента кода.
ParameterizableViewController pvc=new ParameterizableViewController();
String[] str=pvc.getSupportedMethods();
for(String x:str) {
System.out.println(x);
}
чтобы добавить POST или любой другой HTTP-метод, нам нужно добавить этот XML-тег в наш bean-тег.
<bean id="testUrl"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="supportedMethods" value="GET,POST,PUT,DELETE" />
<property name="viewName" value="success" />
</bean>