2017-01-07 1 views
1

Я искал множество источников, чтобы найти точный ответ, который мне нужен, но, к сожалению, я не мог понять, или они никогда не попадали в точное место, которое мне нужно ,Заполнение меню DropDown из базы данных MySQL с использованием Hibernate в Spring MVC

В основном, я разрабатываю веб-приложение spring-mvc, и я позволю пользователю добавить сообщение на сайт. При добавлении этого сообщения он/она будет идентифицировать некоторые функции сообщения, и одна из особенностей - Категория. Все работает отлично, но категория. Я попытался реализовать это поле категории с выпадающим меню, но при запуске проекта я ничего не заполняю в раскрывающемся списке.

Вот мой 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

Из того, что я вижу, похоже, что у вас есть два атрибута модели, сообщение и список категорий. JSP имеет форму, эта форма привязана к столбцу, и вы хотите, чтобы список категорий отображался в раскрывающемся списке формы.

Насколько я знаю, и google это невозможно, если у вас есть два отдельных атрибута модели. Проблема заключается в том, что < form: select path = "category". > ограничен областью действия вашего бина имени команды, поэтому он ищет категорию как свойство для сообщения, а не в модели представления.

Я думаю, вам нужно создать новый класс FormBean, который имеет два свойства, категорию и пост, а затем привязать их к использованию с помощью commandName = "formBean", а затем использовать path = "post.postTitle" для одного свойство на почтовом объекте и < форма: выберите path = "category" ... > для выпадающего меню.

Надеюсь, что это поможет

+0

Вы имеете в виду ** beans ** by ** two properties **? – Prometheus

+0

Ваша модель имеет два атрибута: «пост» и «категория». Когда вы используете привязку формы Spring, ваша модель должна иметь только 1 атрибут (для каждой формы). Это связано с тем, что вы можете обращаться к одному компоненту (атрибуту модели) с помощью имени команды, а каждый атрибут пути всегда относится к командному компоненту. Если это недостаточно ясно, я рекомендую вам снова прочитать документацию и получить правильную терминологию. –