Я видел, что могу добавить ошибки и представить их через <form:errors />
тег и addError()
метод BindingResult
класс, но интересно, существует ли что-то подобное для отправки информационных сообщений в JSP.
Я имею в виду, я хочу добавить сообщения, когда операция была успешна. Я знаю, что мог сделать это путем отправки ошибки, но не будет иметь никакого смысла мне добавлять ошибки, когда не было никакой ошибки вообще.
интересно. Я нашел это в старом проекте :
(This был базовым контроллером, но вполне может быть полезным методом)
protected void addMessage(String key, boolean isError,
HttpServletRequest request, Object... args) {
List<Message> msgs = (List<Message>) request.getAttribute(MESSAGES_KEY);
if (msgs == null) {
msgs = new LinkedList<Message>();
}
Message msg = new Message();
msg.setMessage(msg(key, args));
msg.setError(isError);
msgs.add(msg);
request.setAttribute(MESSAGES_KEY, msgs);
}
, а затем в Messages.jsp
, который был включен во все Страницы у меня было:
<c:forEach items="${messages}" var="message">
//display messages here
</c:forEach>
Message_Key
- это постоянная мона, со значением «Сообщения» (так что позже доступно в Foreach Loop).
Сообщение
класс - простой POJO с этими двумя свойствами. Я использовал его для информационных сообщений, а также для пользовательских ошибок неконвеличества.
Это довольно настраиваемое решение, но, возможно, я не нашел встроенный раствор. Google немного больше перед использованием такого решения.
Почему вы не просто добавляете сообщения в качестве свойств модели, которая передается на просмотр. В вашем JSP вы бы проверили, если они не нулевые, а если нет, отображать их.
Используйте что-то вроде вспышек в рельсах.
Тяжелая часть состоит в том, чтобы сохранить сообщение в перенаправлении после поста . Я Вы отправляете форму, и вы перенаправляетесь на другую страницу, которая показывает сообщение, уведомляющее вас о том, что вы входили в свое действие.
Очевидно, что вы не можете сохранить сообщение в запросе, потому что он будет потерян после перенаправления.
Мое решение состоит в том, чтобы сохранить сеанс Scoped Bean , который содержит текст сообщения и его тип (уведомление, предупреждение или ошибка). Первый раз, когда вы прочитаете его в JSP, вы должны очистить его, чтобы не показывать его более одного раза.