Две кнопки отправки в JSP без нескольких форм, один и тот же контроллер

Я прочитал похожие темы вот так и тот, но он не помог с моей проблемой.

Я создал простое веб-приложение JavaEE mvc. Страница jsp содержит форму с двумя текстовыми полями и двумя кнопками. Первое текстовое поле для ввода идентификатора, второе для ввода имени. В зависимости от того, какая кнопка нажата, сервлет направляется к соответствующему методу (поиск по идентификатору или поиск по имени). Поиск по методу id работает корректно. И вижу в адресной строке следующий путь: http://localhost:8080/employees_war_exploded/ControllerServlet?textEmployeeId=1&command=Search_ID&employeeName=

Однако есть проблема с методом поиска по имени. Он не показывает никаких результатов. Вот что я вижу в адресной строке: http://localhost:8080/employees_war_exploded/ControllerServlet?textEmployeeId=&employeeName=ann&command=Search_Name

Я предполагаю, что проблема в том, что в обоих случаях он получает параметры обоих текстовых полей ("textEmployeeId" и "employeeName"). Как я могу заставить его обрабатывать оба входа отдельно в одной и той же форме? Может быть есть какая-то другая причина проблемы, которую я не вижу?

<form class="form-style" name="form1">
  <label>ID:
    <input type="text" name="textEmployeeId" value="${tempEmployee.id}" />
  </label>
  <input type="submit" name="command" value="Search_ID">
  <br>
  <br>

  <label>Name:
    <input type="text" name="employeeName" value="${tempEmployee.name}" />
  </label>
  <input type="submit" name="command" value="Search_Name">
  <br>
  <br>
</form>

ControllerServlet.java

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            String theCommand = request.getParameter("command");

            if (theCommand == null) {
                theCommand = "EMPLOYEE_LIST";
            }

            // route to the appropriate method
            switch (theCommand) {
                case "EMPLOYEE_LIST":
                    listEmployees(request, response);
                    break;   
                case "Search_ID":
                    searchById(request, response);
                    break;
                case "Search_Name":
                    searchByName(request, response);
                    break;
                default:
                    listEmployees(request, response);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
private void searchByName(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String nameString = request.getParameter("employeeName");

        List<Employee> namedEmployees = employeeDbUtil.searchEmployees(nameString);
        request.setAttribute("EMPLOYEES", namedEmployees);

        RequestDispatcher dispatcher = request.getRequestDispatcher("/search-by-name.jsp");
        dispatcher.forward(request, response);


    }


 private void searchById(HttpServletRequest request, HttpServletResponse response) throws Exception {

            String textString = request.getParameter("textEmployeeId");

             Employee theEmployee = employeeDbUtil.getEmployeeById(textString);
                request.setAttribute("THE_EMPLOYEE", theEmployee);

                RequestDispatcher dispatcher = request.getRequestDispatcher("/show-employee.jsp");
                dispatcher.forward(request, response);
            }

        }

Обновление: я получаю исключение NullPointerException для метода searchByName. Может ли быть проблема с этим методом из класса DAO, который вызывается из ControllerServlet?

public List<Employee> searchEmployees(String employeeName) throws Exception {
    List<Employee> employeeList = new ArrayList();

    Connection myConnection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;

    try {
        employeeName += "%";
        preparedStatement = myConnection.prepareStatement("SELECT * FROM employees WHERE LOWER(name) like LOWER(?)");
        preparedStatement.setString(1, employeeName);
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            Employee tempEmployee = resultSetToEmployee(resultSet);
            employeeList.add(tempEmployee);
        }
        return employeeList;
    }
    finally {
        DbExceptions.close(resultSet);
        DbExceptions.close(preparedStatement);
        DbExceptions.close(myConnection);
    }

}

person Ivan T    schedule 13.12.2016    source источник
comment
почему бы не использовать две формы для интереса?   -  person David    schedule 13.12.2016
comment
Возможно, просто нет результатов, вас перенаправляет на search-by-name.jsp? Похоже, что ваш поток выполнения сервлета отключается от атрибута команды и просто обращается к другим атрибутам на основе команды.   -  person Zachary Craig    schedule 13.12.2016
comment
@David Я читал, что использование нескольких форм в одном и том же jsp не является хорошей практикой. И мне также любопытно, есть ли способ решить эту проблему без нескольких форм.   -  person Ivan T    schedule 14.12.2016
comment
@ zack6849 Когда я нажимаю Search_ID, все выполняется правильно. И меня перенаправляют на /show-employee.jsp страницу с ожидаемым результатом. Но когда я нажимаю кнопку Search_Name, я получаю исключение NullPointerException. И это не перенаправляет меня на страницу search-by-name.jsp. Там просто пустая белая страница браузера.   -  person Ivan T    schedule 14.12.2016
comment
убедитесь, что список сотрудников на самом деле не пуст, ваш код выглядит так, как будто он должен работать нормально   -  person Zachary Craig    schedule 14.12.2016
comment
@ zack6849 Кажется, он пуст. Но я не могу понять, как это исправить. Обновлен пост с реализацией метода DAO, который вызывается из сервлета.   -  person Ivan T    schedule 14.12.2016
comment
проверьте, что ваш параметр запроса не равен нулю, или по умолчанию строка будет пустой, если она String nameString = request.getParameter(employeeName) == null ? : request.getParameter(employeeName);   -  person David    schedule 14.12.2016
comment
@David Спасибо за вашу помощь. Я нашел решение... возникла проблема с методом searchEmployees(String employeeName) из класса DAO. Как видите, есть строка Connection myConnection = null;, но я не получаю соединения с DataSource. Таким образом, метод вернул пустой список. Добавление следующей строки myConnection = dataSource.getConnection(); в блок try решило проблему.   -  person Ivan T    schedule 15.12.2016