如何以 jsp 形式从数据库绑定类别列表

How to bind list of category from database in jsp form

我在数据库中有类别列表,我想在组合框中绑定这些类别:我知道这是一个愚蠢的问题并且被问了很多次但是我没有得到我想要的答案请不要投票或标记为重复。

Hare 是我的代码: 控制器 class:

public String getCategoryList(Model model) {
        List<Category> categoryList = categoryService.getAllCategory();
        model.addAttribute("categoryList", categoryList);
        return "redirect:/manageProduct";

    }

存储库class:

@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>

我错的地方请标记我的错误并尝试以简单的方式回答。谢谢。

预期结果:从数据库中填充类别列表。 实际结果:未填充任何内容。

问题是您从原始请求发出重定向,因此在呈现视图时模型不可用。

public String getCategoryList(Model model) {
    List<Category> categoryList = categoryService.getAllCategory();
    model.addAttribute("categoryList", categoryList);
    //return "redirect:/manageProduct"; 
    return "/manageProduct"; 
}

不需要从 GET 请求重定向,所以按照上面的方式更改应该没问题。

如果您确实需要在重定向后使请求属性可用(例如,如果遵循 Post/Redirect/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

https://dzone.com/articles/spring-mvc-flash-attributes