2011-07-02 57 views
0

我通過向session中添加數據從action類中獲取數據。每當我單擊選擇列表中的onchange事件時觸發該函數調用我們的servlet直到現在確定,只要我們發送第二次請求該servlet不被調用爲什麼?也比較失敗,它將保持以前的價值only.here我發送來自ajax.pls的請求任何一個可以提供解決方案嗎?Struts2和servlet集成

Ajax代碼

function verify_details() 
{ 
    var resourceId=document.getElementById("res").value 
    var url="/EIS10/ResourceTest?resourceId="+resourceId; 
    ajax(url); 
} 

Action類代碼:

listResource=taskService.getUserList(taskId); 
     System.out.println("The list Of Resources are::"+listResource); 

     HttpSession session=request.getSession(); 
     session.setAttribute("listResource", listResource); 

ServletCode

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

    System.out.println("Servlet is Called..........."); 

    String resourceId=request.getParameter("resourceId"); 
    boolean t=false; 

    System.out.println("Your Clicked Id::"+resourceId); 

     HttpSession session=request.getSession(); 
     List l=(List)session.getAttribute("listResource"); 

     System.out.println("Resource List in Servlet:"+l); 

     if(l!=null) 
     { 
      System.out.println("The Size of List::"+l.size()); 
      Iterator itr=l.iterator(); 
      while(itr.hasNext()) 
      { 
       String s=itr.next().toString(); 
       System.out.println("Elements in List:"+s); 
       if(s.equals(resourceId)) 
        t=true;         
      } 

      response.setContentType("text/html"); 
      if (t) { 
       response.getWriter().write("Y"); 
      } else { 
       response.getWriter().write("N"); 

      } 
     } 
    } 
} 

回答

1

這可能是因爲日e瀏覽器在第二次請求時從緩存中返回內容。有關解決方案,請參見http://spacebug.com/solving_browser_caching_problem_of_ajax-html/,或者使用可爲您處理此問題的AJAX庫(例如jQuery)。

此外,如果您使用的是Struts,那麼您爲什麼使用裸露的servlet來處理您的AJAX調用?你爲什麼不使用Struts動作?