2011-07-02 5 views
0

セッションにデータを追加することで、アクションクラスからサーブレットにデータを取得しています。selectリストのアイテムをクリックしているときにonchangeイベントが発生したときに、関数が呼び出されるたびにサーブレットが呼び出されます。サーブレットがなぜ呼び出されないのを2回目に要求するのですか?またcomparsionは以前の値だけを維持することに失敗しました。私はajax.plsからリクエストを送信しています。Struts2とサーブレットの統合

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

番目ので、それはおそらくですブラウザは2番目の要求でキャッシュから内容を返します。解答はhttp://spacebug.com/solving_browser_caching_problem_of_ajax-html/を参照するか、これを処理できるAJAXライブラリ(例:jQuery)を使用してください。

さらに、Strutsを使用している場合、なぜAJAX呼び出しを処理するために裸サーブレットを使用しますか?なぜStrutsアクションを使用しないのですか?

関連する問題