Как разделить атрибуты сеанса между сервлетом и файлом jsp?

У меня есть форма, которая при отправке сохраняет данные из своих полей в базу данных. Действие вперед в struts-config сопоставляется с той же страницей при успешной/неудачной вставке данных в базу данных. Я хотел бы предупредить пользователя, как только это будет успешно завершено, поэтому я установил атрибут сеанса (т.е. успех/неудача) в методе класса действий для формы. Затем я получаю и распечатываю этот атрибут сеанса после повторного доступа к странице jsp.

До сих пор я сделал это в классе действий:

 public static void setJavaScriptNotification(HttpServletRequest request, String notificationText) {

    HttpSession session = request.getSession(true);
    session.setAttribute("notification_javascript", notificationText);

}

И в файле jsp, который содержит форму, которую я имею:

    <% String notificationJavaScript = (String) request.getSession().getAttribute("notification_javascript");
pageContext.setAttribute("notification_javascript", notificationJavaScript);
request.getSession().removeAttribute("notification_javascript"); %>

<html>
<head>
<logic:present name="notification_javascript">
        <script type="text/javascript" language="JavaScript">
            function showAlerts() {
                alert("<bean:write name="notification_javascript"/>");
            }
        </script>
    </logic:present>
</head>       
<body onload="doPreOnload(); showAlerts();">

Когда я распечатываю атрибуты сеанса в jsp, я не могу найти атрибут notification_javascript. Я новичок в HTTP, поэтому я мог что-то делать не так.


person bneil    schedule 31.08.2011    source источник
comment
Хотя это и не связано с вашим вопросом, вам следует избегать скриптлетов.   -  person Alfredo Osorio    schedule 31.08.2011
comment
спасибо за отзыв @Alfredo O переключится на jstl   -  person bneil    schedule 31.08.2011


Ответы (1)


  • После установки notification_javascript в сеансе в setJavaScriptNotification() запрос перенаправляется на jsp, где осуществляется доступ к notification_javascript.

  • Если да, то session.getAttribute("notification_javascript") выполнит эту работу.

    request.setAttribute() и session.setAttribute()

  • request.setAttribute() сделает ключ доступным на следующей странице.

  • session.setAttribute() сделает ключ доступным на всех страницах.

person Srikanth Venkatesh    schedule 31.08.2011
comment
Я пробовал String notificationJavaScript = (String) request.getSession().getAttribute(notification_javascript); в jsp, но атрибут notification_javascript не передается. - person bneil; 31.08.2011
comment
Попробуйте session.getAttribute(notification_javascript) - person Srikanth Venkatesh; 31.08.2011
comment
Была проблема с javascript на странице jsp, которую мне нужно было решить. Спасибо за помощь. - person bneil; 02.09.2011