Я работаю над приложением Spring-MVC и должен показать сообщение об ошибке до конца пользователь в случае, если что-то пойдет не так в процессе. Вот фрагмент кода я делаюСообщения об ошибках, возникающие при использовании перенаправления Spring-MVC
GlobalMessages.addErrorMessage(model, "facebook.user.accessDenied");
return REDIRECT_PREFIX + "http://localhost:8080/storefront";
Я использую тег в интерфейсе, чтобы показать сообщение об ошибке, но кажется, что с помощью перенаправления только сбросив мое сообщение об ошибке. Я новичок в Spring-MVC и не уверен, что я делаю это правильно или неправильно.
Одна странная вещь, которую я заметил, что в то время как перенаправление URL становится все изменения в
http://localhost:9001/storefront/?errorKey=facebook.user.accessDenied
это оставшаяся часть функции addErrorMessage
public static void addErrorMessage(final Model model, final String messageKey)
{
addMessage(model, ERROR_MESSAGES_HOLDER, messageKey);
}
protected static void addMessage(final Model model, final String messageHolder, final String messageKey)
{
if (model.containsAttribute(messageHolder))
{
final Map<String, Object> modelMap = model.asMap();
final List<String> messageKeys = new ArrayList<String>((List<String>) modelMap.get(messageHolder));
messageKeys.add(messageKey);
model.addAttribute(messageHolder, messageKeys);
}
else
{
model.addAttribute(messageHolder, Collections.singletonList(messageKey));
}
}
да, вы правы 'REDIRECT_PREFIX = redirect'. У меня было такое же предположение о потере ценности. Есть ли способ сохранить это при использовании 'redirect' –
Нет, вы не должны использовать перенаправление, потому что он не сохранит вашу модель и объект BindingResult. Когда вы перенаправляете его, он будет вызывать контроллер для сопоставленного сопоставления запросов в качестве вашего URL-адреса. –
Моя проблема заключается в том, что я должен отправить обратно пользователя в то же место, откуда он/она пришел, и использование простого представления невозможно в соответствии с базовой структурой структуры :( –