Как да споделя атрибути на сесия между сървлет и jsp файл?

Имам формуляр, който при изпращане съхранява данни от своите полета в базата данни. Действието напред в struts-config се преобразува обратно на същата страница за успех/неуспех при вмъкване на данни в базата данни. Бих искал да предупредя потребителя, след като това приключи успешно, така че задавам атрибут на сесията (т.е. успех/неуспех) в метода на класа на действие за формуляра. След това получавам и отпечатвам този атрибут на сесията, след като jsp страницата бъде осъществена отново.

Досега направих това в Action Class:

 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