在Spring MVC中使用Hibernate从MySQL数据库填充DropDown菜单

时间:2017-01-07 13:09:29

标签: spring hibernate jsp spring-mvc drop-down-menu

我已经查看了许多来源以找到我需要的确切答案,但不幸的是,我无法理解,或者他们从未到达我需要的确切位置。

基本上,我正在开发一个spring-mvc web应用程序,我将允许用户向网站添加帖子。在添加此帖子时,他/她将确定帖子的某些功能,其中一项功能是 类别 。一切都很好,但类别。我尝试使用下拉菜单实现此类别字段,但在运行项目时,我在下拉列表中没有填充任何内容。

这是我的 jsp 页面:

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@include file="/WEB-INF/views/template/header.jsp" %>

<div id="page">
<div id="main">
    <div class="row">
        <div class="three columns"></div>
        <div class="six columns">
            <form:form action="${pageContext.request.contextPath}/addPost" method="post" commandName="post"
                       enctype="multipart/form-data">
                <div class="form-group">
                    <label>Kategori</label>
                    <form:select path="category" id="category">
                        <form:option value="NONE" label="--- Seçiniz ---"/>
                        <form:options items="${category}"></form:options>
                    </form:select>
                    <!--select name="category">
                        <option name="category_id" value="0">Seçiniz</option>
                    </select-->
                </div>
                <div class="form-group">
                    <label>İlan Başlığı</label> <form:errors path="postTitle" cssStyle="color: #ff0000"/>
                    <form:input path="postTitle" id="title" class="form-Control"/>
                </div>
                <div class="form-group">
                    <label>İlan Açıklaması</label>
                    <form:input path="description" id="description" class="form-Control"/>
                </div>
                <!--div class="form-group">
                <label>Etiketler</label>
                <input type="text" class="asdasd" name="title" placeholder="İlanınız ile ilgili etiketler" required>
                </div-->
                <div class="form-control">
                    <label>Fiyat</label> <form:errors path="price" cssStyle="color: #ff0000"/>
                    <form:input path="price" id="price" class="form-Control"/>
                </div>
                <div class="form-group">
                    <label>Lokasyon</label>
                    <form:input path="postAddress" id="address" class="form-Control"/>
                </div>
                <div class="form-group">
                    <label class="control-label" for="postImage">Fotoğraf Yükle</label>
                    <form:input name="file" path="postImage" id="postImage" type="file" class="form:input-large"/>
                </div>
                <div class="form-group">
                    <button type="submit" value="submit" class="btn btn-send-message pull-right">İLAN OLUŞTUR</button>
                </div>
            </form:form>
        </div>
        <div class="three columns"></div>
    </div>
</div>

这是我的控制器功能:

@RequestMapping(value= "/addPost", method = RequestMethod.GET)
public String addPost(Model model) {
    Post post = new Post();
    post.setActive(true);

    List<Category> category = categoryService.getAllCategories();

    model.addAttribute("category", category);
    model.addAttribute("post", post);

    return "addPost";
}

我想在这里做的是,我希望从Hibernate帮助下创建的数据库表中获取必要的数据,并将其发送到下拉菜单。

SO和其他一些博客中的许多示例都显示了通过手动从控制器填充下拉菜单等功能。这是我不想要的。到目前为止,我能找到的最接近的答案是this。但由于我是春天的新人,我无法得到它。

如果有人能指出我正确的方向如何设置这将是一个很大的帮助。

提前致谢。

1 个答案:

答案 0 :(得分:1)

从我所看到的,看起来你有两个模型属性,帖子和类别列表。 JSP有一个表单,这个表单绑定到post bean,你希望在表单的下拉列表中显示类别列表。

据我所知,https://github.com/Blizzard/node-rdkafka这是不可能的,只要你有两个独立的模型属性。问题是&lt; form:select path =“category”..&gt;  由commandName bean限定,因此它在post上查找category作为属性,而不是在视图模型中查找。

我认为您需要创建一个新类FormBean,它具有两个属性,category和post,然后将其绑定到from using using commandName =“formBean”,然后对单个属性使用path =“post.postTitle”在post对象上,&lt; form:select path =“category”...&gt;下拉列表。

希望这有帮助