Обновить объект сеанса Java в Javascript - PullRequest
0 голосов
/ 07 июля 2011

Я пытаюсь использовать javascript, чтобы сделать что-то, как только он обнаруживает изменение в объекте сеанса.Тем не менее, JavaScript не обнаруживает изменения в объекте сеанса после того, как я вызвал UpdateServlet.Все это делается на одной странице (т. Е. Обновление страницы отсутствует)

Пожалуйста, помогите!Спасибо.

index.jsp

<%
     //initial settings
     session.setAttribute("dataUpdated", "false");   

%>
<script>

   $(function() {
         var updates = '<%=session.getAttribute("dataUpdated")%>';

         alert(updates);
         //Shows false even after update

      if (updates=="true"){
          //alert("Updated");
      }



   });
 </script>

UpdateServlet.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

       HttpSession session = request.getSession();
       session.setAttribute("dataUpdated", "true");
       //session object set to true

}

1 Ответ

1 голос
/ 07 июля 2011

Вы должны использовать Ajax, чтобы проверить это изменение. Вы можете периодически проверять с помощью setInterval, например:

setInterval(function(){
   //Here goes your ajax call
   $.ajax({
     ...
     type: 'post',
     success: function(data){
        ...            
        if(objectChanged){
           //Do your stuff here
        }  
     }
   });
}, 5000); //Check each 5 seconds

Мой совет - выполнить вызов ajax с помощью метода POST, чтобы избежать кэширования (если оно кэшируется, никаких изменений не будет обнаружено)

Надеюсь, это поможет. Приветствия

PS: я использовал jQuery, потому что видел, что вы использовали его в своем коде

...