В предыдущих двух статьях мы увидели, как работать с параметрами запроса и пути в будущей инфраструктуре Java EE MVC. Этот пост посвящен параметрам формы.
Когда вы отправляете веб-форму с помощью почтового запроса, значения формы отправляются как часть тела запроса. Тип медиа (или тип контента) определяет формат, который используется для хранения значений внутри тела запроса. Веб-формы обычно используют медиа-тип application / x-www-form-urlencoded. Параметры, отправляемые с использованием этого типа мультимедиа, доступны с помощью аннотации @FormParam.
Использование параметров формы
Предположим, у нас есть следующая простая HTML-форма, содержащая два поля ввода текста и меню выбора:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
<form action="submit" method="post"> <label>ID:</label> <input type="text" name="id" /> <label>Name:</label> <input type="text" name="name" /> <label>Role:</label> <select name="role"> <option value="admin">Admin</option> <option value="reporter">Reporter</option> <option value="accountant">Accountant</option> </select> <input type="submit" /></form> |
Для обработки значений формы мы можем использовать следующий метод контроллера:
|
1
2
3
|
public enum Role { admin, reporter, accountant} |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
@Controller@Path("form-params")public class FormParamsController { @POST @Path("submit") public String submitParams( @FormParam("id") long id, @FormParam("name") String name, @FormParam("role") Role role) { ... }} |
С помощью @FormParam параметры формы могут автоматически сопоставляться с аргументами метода. Параметры формы используют те же правила преобразования типов, что и параметры запроса или пути (описано здесь ). Это облегчает преобразование параметров формы в примитивы, перечисления или объекты.
Использование @FormParam для полей и методов
Как и другие аннотации параметров, @FormParam можно использовать для аннотирования полей и методов.
Например:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@Controller@Path("form-params-fields")public class FormParamsFieldController { @FormParam("id") private long id; @FormParam("role") private Role role; private String name; @FormParam("name") public void setNameField(String name) { this.name = name; } @POST public String submitParams() { // use id, role, name }} |
В этом примере представленные параметры формы отображаются на поля (id, role) и setter (setNameField ()). Внутри submitParams () мы можем просто получить доступ к полям для получения параметров формы.
Краткое резюме
Параметры, отправленные через формы HTML, можно получить с помощью @FormParam. Как и @QueryParam и @PathParam, можно аннотировать поля, методы и параметры методов с помощью @FormParam.
- Вы можете найти исходный код для всех примеров на GitHub .
| Ссылка: | Java EE 8 MVC: Работа с параметрами формы от нашего партнера по JCG Майкла Шаргага в блоге mscharhag, Programming and Stuff . |