В предыдущих двух статьях мы увидели, как работать с параметрами запроса и пути в будущей инфраструктуре 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 . |