2011-08-31 189 views
0

我有一個表單,提交時將數據從字段存儲到數據庫。在struts-config中向前的動作映射回數據插入到數據庫的成功/失敗的同一頁面。我希望在成功完成後提醒用戶,因此我在表單的操作類的方法中設置了會話屬性(即成功/失敗)。然後,我再次訪問jsp頁面後獲取並打印出此會話屬性。如何在servlet和jsp文件之間共享會話屬性?

到目前爲止,我已經在Action類做到了這一點:

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新手,所以我可能在那裏做錯了什麼。

+2

儘管與您的問題沒有關係,您應該避免使用scriptlets。 –

+0

感謝您的反饋@Alfredo O將切換到jstl – bneil

回答

2
  • setJavaScriptNotification在會話設置notification_javascript()之後執行請求被轉發到的jsp其中notification_javascript被訪問。

  • 如果是,則session.getAttribute(「notification_javascript」)將完成這項工作。

    了request.setAttribute()VS session.setAttribute()

  • 了request.setAttribute()將在以下頁面的關鍵可用。

  • session.setAttribute()將使密鑰在所有頁面中可用。

+0

我試過了String notificationJavaScript =(String)request.getSession()。getAttribute(「notification_javascript」);在jsp中,但notification_javascript屬性未被傳遞。 – bneil

+0

嘗試session.getAttribute(「notification_javascript」) –

+0

在我必須解決的jsp頁面中出現javascript問題。謝謝您的幫助。 – bneil