对jquery自动完成没有响应

时间:2014-10-15 06:00:25

标签: jquery ajax spring hibernate

我正在尝试使用spring和hibernate来实现自动完成功能以从数据库中搜索产品名称。当我输入文本框时,会发送请求。但我没有得到任何响应。当我调试Controller时,productName保存正确的文本框值。当我调试DAO时,productName将“productName”保存为值。我在做错了。

控制器

@RequestMapping(value="/getTags", method=RequestMethod.GET)
public @ResponseBody List<Product> getTags(@RequestParam String productName) {
List<Product> productResults = productService.getProductByNameForTag("productName");
            return productResults;
            }

ProductDAOImpl

public List<Product> getProductByNameForTag(String productName) {
            return sessionFactory.getCurrentSession().createQuery
                    ("select p from Product p where p.productName =:productName")
                    .setParameter("productName", productName).list();
        }

脚本/ JSP

$(document).ready(function() {

        $('#productName').autocomplete({
            serviceUrl: '${pageContext.request.contextPath}/getTags',
            paramName: "productName",
            delimiter: ",",
           transformResult: function(response) {

            return {        
              suggestions: $.map($.parseJSON(response), function(item) {

                  return { value: item.productName, data: item.id };
               })
             };
           }
         });
      });

<div>
<form id="searchForm" action="searchproduct.json" > 
    Product Name: <input type="text" name="productName" value="${product.productName}"
                                             id="productName"  />
    <input type="submit" value="Search" />
</form>
</div>

1 个答案:

答案 0 :(得分:0)

我在getProductByNameForTag方法中将productName作为字符串传递。这是工作代码。

@RequestMapping(value="/getTags", method=RequestMethod.GET)
            public @ResponseBody List<Product> getTags(Map model,
                    @RequestParam ("productName") String productName) {

            List<Product> productResults = productService.getProductByNameForTag(productName);
            return productResults;
            }