我在做一个Ajax的中文搜索<form id="frmSearch" action="lookforfriend.action">
<input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria" onkeyup="searchSuggest();" autocomplete="off"/>
<input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
<div id="search_suggest">
</div>
</form>js用的就是网上找的,应该没什么问题,就不贴代码了
ajax_search.js
我在Servlet里的代码是这样的public class SearchSuggest extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
String name = request.getParameter("search");//获得请求中cate的值
name= java.net.URLDecoder.decode(name,"UTF-8"); 
String search=name;
System.out.println("servlet:"+search);//这里是打印出了我搜索的内容,如 "张三"我在Struts2的LookforfriendAction中这样写ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
String name = request.getParameter("search");//获得请求中cate的值
//name= java.net.URLDecoder.decode(name,"UTF-8"); 
System.out.println("action:"+name);//这里打印出来的一直是"null"大家帮帮忙啊~小弟这里先谢过了~~~~~~

解决方案 »

  1.   

    可能有人会问onkeyup="searchSuggest()"这个方法是在ajax_search.js里面写好了的
    因为servlet那边已经拿到了我输入的内容,所以我想问题不在这里。
      

  2.   

    HttpServletRequest request = org.apache.struts2.ServletActionContext.getRequest();
      

  3.   

    LookforfriendAction
    中定义一个String search
      

  4.   

    不是同一个request,你可以设个隐藏表单域,AJAX接收返回的search值,然后再赋值,这样Struts跳转后取隐藏表单域的值
      

  5.   


    是这样写吗?怎么提示有错误<form name="form1" id="frmSearch" action="lookforfriend.action">
    <input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria" onkeyup="searchSuggest();" autocomplete="off"/>
    <input type="hidden" id="hidetext" name="hidetext" value="<%=document.form1.txtSearch.value %>"/><br />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="search_suggest">
    </div>
    </form>
      

  6.   

    问题解决了,是struts2中文乱码问题。。谢谢大家了
      

  7.   

    加入下列代码就解决了~~~HttpServletResponse response =  ServletActionContext.getResponse();
    response.setContentType("text/html;charset=utf-8");
    ActionContext context = ActionContext.getContext();
    HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
    request.setCharacterEncoding("utf-8");