在我的网站中,我有一个从数据库中提取的产品列表,结果会聚合成一个带有select / option的简单列表。现在我想用一个带有单词autocomplete的多字搜索表单来改变它。
这是我的选择/选项列表:
$("#Product").change(function(){
var webProductId = $(this).find(':selected').attr('data-webProductId');
var requestData = { webProductId: webProductId };
yada.ajax([[@{/product/list}]], requestData, function(responseText, responseHtml) {
$('div.sinVotoInner').replaceWith(responseHtml);
yada.initHandlersOn(responseHtml);
});
<select id="wsProduct">
<option value="Products" id="Product" selected>Product</option>
<option th:each="webProduct : ${webProducts}"
th:attr="data-webProductId=${webProduct.id}"
th:text="|${webProduct.name} ${webProduct.description}|">Product 1 Description 1</option>
</select>
这是我的家庭控制器:
@RequestMapping("/")
public String home(Model model) {
List<WebProduct> webProducts = webProductRepository.findByEnabledTrueOrderByNameAsc();
model.addAttribute("webProducts", webProducts);
return "/home";
}
这是我的存储库:
List<WebLocation> findByEnabledTrueOrderByNameAsc();
/**
* @param productId
* @return
*/
@Query(value="select * from WebProduct wp where wp.product_id = :productId", nativeQuery = true)
WebProduct findByProductId(@Param("productId") long productId);
如何更改此代码以包含有效的搜索表单?搜索必须适用于您输入的任何字词,搜索建议(例如Google)会显示在搜索表单中。
答案 0 :(得分:0)
解决方案是:
List<WebProduct> webProducts = webProductRepository.findByWord("%"+word+"%");
查询:
@Query(value="select * from WebProduct wp where wp.name like :word or wp.description like :word", nativeQuery = true)
List<WebProduct> findByWord(@Param("word") String word);