2014-02-03 6 views
0

Моя цель - выбрать выбранные данные в базе данных и отобразить их в выпадающем списке.Отображение выбранных данных из базы данных в выпадающем списке

Например, на изображении ниже показано, что fbMenuId = M001 (Лазанья).

database1

Так на DROPDOWNLIST вариант M001 будет выбран. Мне также нужно отобразить ДРУГИЕ МЕНЮ, такие как M002, M003, M004, M005, M006 и M007. Например, смотрите изображение ниже

database

Однако мой результат

ddl

Ниже приведены мои коды

<select class="form-control" name="menu" id="menu"> 
              <option value="${order.fbMenuId}" selected>${order.fbMenuName}</option> 
              <c:forEach var="menu" items="${menu}"> 
               <option value="${menu.fbMenuId}">${menu.fbMenuName}</option> 
              </c:forEach> 

</select> 

Я способен отображать M001 лазаньи. Тем не менее, есть 2 Лазанья, которых я не хочу. Кто-нибудь, пожалуйста, помогите мне. Помощь будет оценена. Заранее спасибо!

Ниже приведены коды для сервлетов и объекта доступа к данным.

Servlet

OrderDAO dao = new OrderDAO(); 
request.setAttribute("order", dao.getOrder(fbOrderId)); 
request.setAttribute("menu", dao.getMenu(restaurant)); 

OrderDAO

public OrderBean getOrder(Integer fbOrderId) { 

      OrderBean ob = new OrderBean(); 
      try { 
       currentCon = ConnectionManager.getConnection(); 
       Statement statement = currentCon.createStatement(); 
       ResultSet rs = statement.executeQuery("SELECT fborders.fbMenuId, fbMenuName FROM fborders INNER JOIN fbmenu ON fborders.fbMenuId = fbmenu.fbMenuId WHERE fbOrderId='"+ fbOrderId + "'"); 

       while (rs.next()) { 
        ob.setFbMenuId(rs.getString("fbMenuId")); 
        ob.setFbMenuName(rs.getString("fbMenuName")); 
       } 

      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 

      return ob; 
     } 



public ArrayList getMenu(String restaurant) { 

     ArrayList<OrderBean> am = new ArrayList<OrderBean>(); 
     try { 
      currentCon = ConnectionManager.getConnection(); 
      Statement statement = currentCon.createStatement(); 
      ResultSet rs = statement 
        .executeQuery("SELECT fbMenuId, fbMenuName FROM fbmenu WHERE fbRestaurantId='" 
          + restaurant + "'"); 

      while (rs.next()) { 
       OrderBean ob = new OrderBean(); 
       ob.setFbMenuId(rs.getString("fbMenuId")); 
       ob.setFbMenuName(rs.getString("fbMenuName")); 
       am.add(ob); 
      } 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     return am; 
    } 

ответ

0
<select class="form-control" name="menu" id="menu"> 
    <c:forEach var="menu" items="${menu}"> 
     <c:choose> 
      <c:when test="${menu.fbMenuId == order.fbMenuId}"> 
       <option value="${order.fbMenuId}" selected>${order.fbMenuName}</option> 
      </c:when> 
      <c:otherwise> 
       <option value="${menu.fbMenuId}">${menu.fbMenuName} </option> 
      </c:otherwise> 
     </c:choose> 
    </c:forEach> 
</select> 
1

Согласно моему пониманию, вы показываете выбранное значение в два раза. один раз путем добавления

<option value="${order.fbMenuId}" selected>${order.fbMenuName}</option> 

и в другое время путем итерации списка. Вместо этого введите все значения в раскрывающемся списке и установите требуемое значение как выбранное. Просто напишите простое условие, например следующее.

<select class="form-control" name="menu" id="menu">   
     <c:forEach var="menu" items="${menu}"> 
      <option value="${menu.fbMenuId}">${menu.fbMenuName} 
      <c:if test="${menu.fbMenuId == order.fbMenuId}"> 
      selected 
      </c:if> 
      </option> 
     </c:forEach> 
    </select> 
+0

Спасибо! Однако из вашего кода

+0

Извините, пожалуйста, удалите ** '' ** строку и попробуйте. Я только что отредактировал свой ответ, пожалуйста, найдите его. –

+0

Хорошо. Благодарю. Однако. По-прежнему существует проблема. Он не отображает выбранное значение. Я считаю, что этот код неправильный. selected Этот код отображается «Fish & Chips selected» – newbieinjavaversion2

Смежные вопросы