Динамический выпадающий возвращает ноль из JSP - PullRequest
1 голос
/ 21 марта 2019

Я написал выпадающий список, который заполняется базой данных. Это мой выпадающий код в файле JSP.

 <td>Category:</td>
 <%
  try {
      dbConnect dbConnect = new dbConnect();
      Connection currentCon = dbConnect.Connect();
      System.out.println("Connection sucess");
      String sql = "SELECT * FROM categories";
      PreparedStatement ps = currentCon.prepareStatement(sql);
      ResultSet rs = ps.executeQuery();%>
 <td><select name="category" class="form-control" required>
      <%
        while (rs.next()) {
           String cname = rs.getString("category_name");
           String id = rs.getString("category_id");
           System.out.println(id);
      %>
      <option value="<%= id%>"><%= cname%></option>
      <%
        }
      %>
      </select>
      <%
      } catch (SQLException sqe) {
            out.println(sqe);
      }
 %>
 </td>

Соответствующий код сервлета:

String id = request.getParameter("category");

В раскрывающемся списке JSP он печатает все идентификаторы в категории. Но когда дело доходит до сервлета, он возвращает ноль. Как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Я не нашел ни кнопки <form> tag, ни submit в вашем коде, попробуйте следующий код:

    <td>Category:</td>
     <form method="post"  action="yourservleturl">//form tag for submitting data

         <%
          try {
              dbConnect dbConnect = new dbConnect();
              Connection currentCon = dbConnect.Connect();
              System.out.println("Connection sucess");
              String sql = "SELECT * FROM categories";
              PreparedStatement ps = currentCon.prepareStatement(sql);
              ResultSet rs = ps.executeQuery();%>
         <td><select name="category" class="form-control" required>
              <%
                while (rs.next()) {

              %>
              <option value="<%=rs.getString("category_id")%>"><%=rs.getString("category_name")%></option> // printing option values
              <%
                }
              %>
              </select>
              <%
              } catch (SQLException sqe) {
                    out.println(sqe);
              }
         %>
     <input type="submit" value="submit">///submit btn
  </form>
</td>

также получите, выпадающее значение на String id = request.getParameter("category"); .Это должно работать.

0 голосов
/ 21 марта 2019

Локальная переменная должна звучать вне цикла while, потому что вам нужно это значение после цикла while.

<%
try {
  dbConnect dbConnect = new dbConnect();
  Connection currentCon = dbConnect.Connect();
  System.out.println("Connection sucess");
  String sql = "SELECT * FROM categories";
  PreparedStatement ps = currentCon.prepareStatement(sql);
  ResultSet rs = ps.executeQuery();%>
  String cname = null;
  String id = null;
 <td><select name="category" class="form-control" required>
  <%
    while (rs.next()) {
       cname = rs.getString("category_name");
       id = rs.getString("category_id");
       System.out.println(id);
  %>

Кроме того, я предлагаю вам использовать язык выражений вместо <%= id%>

изменить <option value="<%= id%>"><%= cname%></option> на

<option value="${id}">${name}</option>

И не забудьте кнопку отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...