我正在尝试使用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>
答案 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;
}