如何以JSP形式绑定数据库中的类别列表

时间:2019-06-20 07:44:54

标签: mysql hibernate spring-mvc jsp jstl

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

兔子是我的代码: 控制器类:

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>

如果我出错了,请标记我的错误并尝试以简单的方式回答。谢谢。

预期结果:从数据库中填充类别列表。 实际结果:什么都不会填充。

1 个答案:

答案 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

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