2015-03-20 4 views
0

Установка недопустимого значения в форме редактирования (большее значение, чем длинный предел) вызывает 405 на отправить (POST) на коте 8.POST Весенней формы редактирования на Tomcat 8 выдает 405 времени на коте 7 работает

же представить на TOMCAT 7 работ, как ожидается, и показывает ошибку связывания поля:

Failed to convert property value of type java.lang.String to required type java.lang.Long for property userId; nested exception is java.lang.NumberFormatException: For input string: "56345345345345345345345345"

Любая идея?

ответ

0

Наконец-то я выяснил, что причина связана с тем, что Spring меняет запрос POST на PUT на основе скрытого поля _method (по HiddenHttpMethodFilter, см. [1]), но никогда не меняет его на предыдущий метод , В результате, когда запрашивается форма обновления, которая должна отображаться с сообщениями об ошибках проверки или привязки, передняя Spring (InternalResourceView) содержит завернутый запрос, который имеет метод, перезаписанный в PUT, и по этой причине отклоняется Tomcat> = 8.

хороший подход, как представляется, использование ручного фильтра, который изменяет метод GET на FORWARD [2], [3]

[1] HTTP Status 405 - JSPs only permit GET POST or HEAD

[2] 405 JSP error with Put Method

[3] https://jira.spring.io/browse/SPR-12848

1

Максимальное значение для Long - 9223372036854775807. Ваш номер больше. Попробуйте BigDecimal как параметр или получите его как строку, а затем проанализируйте его до BigDecimal.

+0

Привет, Евгений, я знаю, что он больше. Вот почему я ожидал сообщения об ошибке проверки в моей форме обновления (как показано в tomcat 7) вместо 405 страницы, показанной в tomcat 8. Вопрос в том, как я могу получить это сообщение проверки на tomcat 8 и почему я получаю 405 (запрос POST) вместо сообщения проверки. – Chris

+0

@Chris Как организована ваша проверка? Hibernate validator, валидатор весны, клиентская сторона? Можете ли вы добавить его к вопросу. –

+0

в этом поле нет никаких ограничений проверки. Механизм связывания пружин не может преобразовать входную строку в Long и показывает сообщение об исключении исключений под полями в формате ошибки проверки – Chris