Рубрики
Без рубрики

Несколько кнопок Отправки в форме

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве/| мы будем опираться на начало работы с формами в Spring MVC и добавим еще одну кнопку в форму JSP , сопоставляя ее с тем же URI.

2. Краткое Резюме

Ранее мы создали небольшое веб-приложение для ввода сведений о сотруднике и сохранения их в памяти.

Сначала мы написали модель Employee для привязки сущности, затем EmployeeController для обработки потока и сопоставлений и, наконец, представление с именем employeeHome, описывающее форму для ввода пользователем входных значений.

Эта форма имела одну кнопку Submit , которая сопоставлялась с RequestMapping контроллера, вызываемого addEmployee для добавления введенных пользователем сведений в базу данных в памяти с использованием модели.

В следующих нескольких разделах мы увидим, как добавить еще одну кнопку Отмена в ту же форму с тем же сопоставлением запросов путем в контроллере .

3. Форма

Во-первых, давайте добавим новую кнопку в форму employee Home.jsp :

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
...

    

Welcome, Enter The Employee Details

${message}

... ...

Как мы видим, мы добавили атрибут name к существующей кнопке Submit и добавили другую кнопку Cancel с именем , установленным в cancel .

Мы также добавили атрибут модели сообщение в верхней части страницы, который будет отображаться при нажатии кнопки Отмена .

4. Контроллер

Далее, давайте изменим контроллер , чтобы добавить новый атрибут param в RequestMapping , чтобы различать два нажатия кнопок:

@RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "submit")
public String submit(@Valid @ModelAttribute("employee") final Employee employee, 
  final BindingResult result, final ModelMap model) {
        // same code as before
}
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "cancel")
public String cancel(@Valid @ModelAttribute("employee") final Employee employee, 
  final BindingResult result, final ModelMap model) {
    model.addAttribute("message", "You clicked cancel, please re-enter employee details:");
    return "employeeHome";
}

Здесь мы добавили новый параметр params к существующему методу submit . Примечательно, что его значение совпадает с именем , указанным в форме.

Затем мы добавили другой метод cancel с аналогичной сигнатурой, с той лишь разницей, что параметр params указан как cancel . Как и прежде, это точно такое же значение, как имя кнопки Отмена в форме JSP.

5. Тестирование

Для тестирования мы развернем проект в веб-контейнере, таком как Tomcat.

При попадании по URL-адресу http://localhost:8080/spring-mvc-forms/employee , будут представлены:

После нажатия Отмена , мы увидим:

Здесь мы видим сообщение, которое мы закодировали в методе контроллера cancel .

При нажатии кнопки Отправить мы видим введенную информацию о сотруднике , как и раньше :

6. Заключение

В этом уроке мы узнали, как добавить еще одну кнопку в ту же форму в приложении Spring MVC , которое сопоставляется с тем же RequestMapping на контроллере.

Мы можем добавить больше кнопок, если потребуется, используя ту же технику, что и в фрагментах кода .

Как всегда, исходный код доступен на GitHub .