Вопрос

В настоящее время я пытаюсь вернуть модель из onSubmit() в свой контроллер.Затем я пытаюсь получить это в своем jsp.

например

Map model = new HashMap();
model.put("errors", "example error");
return new ModelAndView(new RedirectView("login.htm"), "model", model);

а затем получить его с помощью

<c:out value="${model.errors}"/>

Однако это ничего не отображает.он переходит на правильный редирект и не выдает никаких ошибок, но текст не отображается.

Любая помощь будет высоко ценится.

Спасибо

Это было полезно?

Решение

Что делает RedirectView, так это отправляет заголовок перенаправления в браузер, чтобы браузер выполнил полную перезагрузку страницы, в результате модель не переносится туда (так как теперь она обрабатывается контроллером входа со своей собственной моделью).

Что вы можете сделать, так это передать ошибки через атрибуты запроса:

В ваших представлениях.свойствах:

loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm

Затем вместо возврата RedirectView:

request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");

И в вашем контроллере входа проверьте этот атрибут и добавьте его в модель.

Обновлять: Без использования view.properties:

request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));

ИЛИ вы можете добавить (еще один) внутренний преобразователь представлений в свой App-servlet.xml (Примечание из API:При объединении ViewResolver в цепочку InternalResourceViewResolver всегда должен быть последним, поскольку он будет пытаться разрешить любое имя представления, независимо от того, существует ли базовый ресурс на самом деле.):

<bean id="viewResolver2"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>

А затем просто используйте:

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top