2012-05-31 4 views
0

Я работаю над приложением 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)); 
     } 
    } 

ответ

0

Я не в состоянии понять, что именно вы пытаетесь достичь здесь. Но я предполагаю, что вы пытаетесь показать сообщение об ошибке после проверки на уровне контроллера, а затем хотите снова отобразить ту же форму, но с сообщениями об ошибках.

Я также смущен вашей REDIRECT_PREFIX переменной. Какова его ценность? Если вы используете «redirect:» в качестве значения, это проблема. При переадресации на другое представление сообщение об ошибке, которое вы привязали к свойствам модели, не будет отображаться в форме. Вам нужно просто указать имя представления, где отображается ваша форма, а весна автоматически отображает ошибки, связанные с вашим свойством модели.

Надеюсь, это вам поможет. Приветствия.

+0

да, вы правы 'REDIRECT_PREFIX = redirect'. У меня было такое же предположение о потере ценности. Есть ли способ сохранить это при использовании 'redirect' –

+0

Нет, вы не должны использовать перенаправление, потому что он не сохранит вашу модель и объект BindingResult. Когда вы перенаправляете его, он будет вызывать контроллер для сопоставленного сопоставления запросов в качестве вашего URL-адреса. –

+0

Моя проблема заключается в том, что я должен отправить обратно пользователя в то же место, откуда он/она пришел, и использование простого представления невозможно в соответствии с базовой структурой структуры :( –

Смежные вопросы