这是一个使用spring和hibernate的简单搜索操作。当我输入搜索值并点击提交时,结果页面加载什么都没有。它不会抛出任何错误。它的空白。请有人指出我错在哪里。
ProductDAOImpl.java
public List<Product> searchProductByName(String productName) {
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Product.class);
criteria.add(Restrictions.ilike("productName", productName+"%"));
return criteria.list();
}
ProductServiceImpl.java
@Transactional
public List<Product> searchProductByName(String productName) {
return productDAO.searchProductByName(productName);
}
ProductController.java
@RequestMapping(value="searchproduct.html", method=RequestMethod.POST)
public ModelAndView searchProduct(@RequestParam String productName) {
ModelAndView mav = new ModelAndView("searchproduct");
List<Product> productResults = productService.searchProductByName(productName);
mav.addObject("productResults", productResults);
return mav;
}
searchform
<form action="searchproduct" method="post" >
Product Name: <input type="text" name="productName"/>
<input type="submit" value="Search" />
</form>
searchproduct.jsp
<body>
<c:if test="${!empty productResults}">
<table class="productTable" border="1" cellpadding="0" cellspacing="0" align="center">
<tr>
<th>Product Name</th>
<th>Price</th>
<th>Quantity</th>
</tr>
<c:forEach items="${productResults}" var="product">
<tr>
<td>${product.productName}</td>
<td>${product.price}</td>
<td>${product.quantity}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
答案 0 :(得分:0)
您的表单操作是 searchproduct ,您的控制器操作是 searchproduct.html 。如果我是正确的,那么两个动作应该是相同的。
在结果JSP中添加<c:choose>
标记而不是<c:if>
来检查结果是否为空,然后显示没有找到结果的文本。