Добавить сообщения с весны - PullRequest
6 голосов
/ 18 января 2010

Я видел, что могу добавлять ошибки и отображать их с помощью тега <form:errors /> и метода addError() класса BindingResult, но мне интересно, есть ли что-то подобное для отправки информационных сообщений в JSP.

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

Ответы [ 3 ]

4 голосов
/ 18 января 2010

Почему бы вам просто не добавить сообщения в качестве свойств модели, которая передается в представление. В вашем JSP вы должны проверить, не являются ли они нулевыми, и, если нет, отобразить их.

2 голосов
/ 18 января 2010

Интересно. Я нашел это в моем старом проекте.

(это был базовый контроллер, но вполне мог быть утилитарным методом)

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>

MESSAGES_KEY - моя константа со значением «messages» (так, чтобы она позже была доступна в цикле forEach).

Класс Message является простым POJO с этими двумя свойствами. Я использовал его для информационных сообщений, а также для пользовательских ошибок без проверки.

Это довольно нестандартное решение, но, возможно, я не нашел тогда встроенного решения. Гугл немного больше, прежде чем использовать такое решение.

1 голос
/ 26 января 2010

Используйте что-то вроде Flash-сообщений в Rails.

Сложная задача - сохранить сообщение в перенаправлении после сообщения . То есть Вы отправляете форму и перенаправляете на другую страницу с сообщением, уведомляющим вас о том, что вы успешно выполнили свои действия.

Очевидно, что вы не можете сохранить сообщение в запросе, потому что оно будет потеряно после перенаправления.

Мое решение состоит в том, чтобы сохранить сессионный компонент , содержащий текст сообщения и его тип (уведомление, предупреждение или ошибка). При первом чтении в JSP вы должны очистить его, чтобы не показывать его более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...