Эта проблема вызвана (как утверждали другие) тем, что атрибуты модели сохраняются в строке запроса - это обычно нежелательно и рискует создать дыры в безопасности, а также смешные строки запроса. Мое обычное решение - никогда не использовать строки для перенаправлений в Spring MVC, вместо этого используйте RedirectView, который можно настроить так, чтобы он не отображал атрибуты модели (см .: http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/view/RedirectView.html)
RedirectView(String url, boolean contextRelative, boolean http10Compatible, boolean exposeModelAttributes)
Так что, как правило, у меня есть метод util, который выполняет «безопасное перенаправление», например:
public static RedirectView safeRedirect(String url) {
RedirectView rv = new RedirectView(url);
rv.setExposeModelAttributes(false);
return rv;
}
Другой вариант - использовать XML конфигурации bean:
<bean id="myBean" class="org.springframework.web.servlet.view.RedirectView">
<property name="exposeModelAttributes" value="false" />
<property name="url" value="/myRedirect"/>
</bean>
Опять же, вы можете абстрагировать это в свой собственный класс, чтобы избежать повторения (например, SafeRedirectView).
Примечание об «очистке модели» - это не то же самое, что «не показывать модель» при любых обстоятельствах. На одном сайте, над которым я работал, было много фильтров, которые добавляли вещи в модель, это означало, что очистка модели перед перенаправлением не помешает длинной строке запроса. Я также хотел бы предположить, что «недопущение атрибутов модели» является более семантическим подходом, чем «очистка модели перед перенаправлением».