Struts2和servlet集成

时间:2011-07-02 06:32:34

标签: ajax servlets struts2

我通过向session添加数据从动作类获取数据到servlet。每当我点击选择列表中的项时onchange事件被触发该函数被调用我们的servlet到现在确定,每当我们发送第二次请求时servlet不叫为什么?并且comparsion失败它只会保留以前的值。我从ajax发送请求.pls可以提供解决方案吗?

AjaX代码

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

行动类代码:

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 个答案:

答案 0 :(得分:1)

这可能是因为浏览器在第二次请求时从其缓存中返回内容。有关解决方案,请参阅http://spacebug.com/solving_browser_caching_problem_of_ajax-html/,或使用可以为您处理此问题的AJAX库(例如jQuery)。

此外,如果您使用的是Struts,为什么还要使用裸servlet来处理您的AJAX调用?你为什么不使用Struts动作?