我通过向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");
}
}
}
}
答案 0 :(得分:1)
这可能是因为浏览器在第二次请求时从其缓存中返回内容。有关解决方案,请参阅http://spacebug.com/solving_browser_caching_problem_of_ajax-html/,或使用可以为您处理此问题的AJAX库(例如jQuery)。
此外,如果您使用的是Struts,为什么还要使用裸servlet来处理您的AJAX调用?你为什么不使用Struts动作?