繁体   English   中英

在下拉列表中显示从数据库中选择的数据

[英]Display Selected Data from database in drop down list

我的目标是在数据库中选择数据并显示在下拉列表中。

例如,请参见下图,显示fbMenuId = M001(千层面)。

数据库1

因此,将在下拉列表中选择M001选项。 我还需要显示其他菜单,例如M002,M003,M004,M005,M006和M007。 例如,请参见下图

数据库

但是,我的结果是

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和数据访问对象的代码。

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;
    }

据我了解,您正在两次显示所选值。 通过追加一次

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM