我在数据库中有类别的列表,我想在组合框中绑定这些类别:我知道这是一个愚蠢的问题,问了很多遍,但是我没有得到答案,因为我想请不要下注或标记作为重复。
兔子是我的代码: 控制器类:
public String getCategoryList(Model model) {
List<Category> categoryList = categoryService.getAllCategory();
model.addAttribute("categoryList", categoryList);
return "redirect:/manageProduct";
}
存储库类:
@Override
public List<Category> getAllCategory() {
CriteriaQuery<Category> criteriaQuery = HibernateUtil.getSession(sessionFactory).getCriteriaBuilder()
.createQuery(Category.class);
criteriaQuery.from(Category.class);
List<Category> categoryList = HibernateUtil.getSession(sessionFactory).createQuery(criteriaQuery)
.getResultList();
return categoryList;
}
JSP页面:
<label>Product Category</label> <select name="category"
class="browser-default custom-select mb-4">
<option value="" disabled selected>Choose Category</option>
<c:forEach items="${categoryList}" var="catList">
<option value="${catList.id}">${catList.categoryName}</option>
</c:forEach>
</select>
如果我出错了,请标记我的错误并尝试以简单的方式回答。谢谢。
预期结果:从数据库中填充类别列表。 实际结果:什么都不会填充。
答案 0 :(得分:1)
问题是您从原始请求发出了重定向,因此呈现视图时该模型不可用。
public String getCategoryList(Model model) {
List<Category> categoryList = categoryService.getAllCategory();
model.addAttribute("categoryList", categoryList);
//return "redirect:/manageProduct";
return "/manageProduct";
}
不需要从GET请求重定向,因此进行上述更改,就可以了。
如果确实需要在重定向后使请求属性可用(例如,如果遵循发布/重定向/获取模式https://en.wikipedia.org/wiki/Post/Redirect/Get),则可以使用Flash属性。
有关更多详细信息,请参见此处:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-flash-attributes