formFieldMap
Description
Extracts all HTTP form fields at once as a Map<String, String>
mapping form field names to form field values. Data posted from HTML Forms is either of type application/x-www-form-urlencoded
or of type multipart/form-data
.
If form data contain a field value several times, the map will contain the last one.
Warning
Use of this directive can result in performance degradation or even in OutOfMemoryError
s. See formFieldList for details.
Example
final Function<Map<String, String>, String> mapToString = map ->
map.entrySet()
.stream()
.map(e -> e.getKey() + " = '" + e.getValue() +"'")
.collect(Collectors.joining(", "));
final Route route = formFieldMap(fields ->
complete("The form fields are " + mapToString.apply(fields))
);
// tests:
final FormData formDataDiffKey =
FormData.create(
Pair.create("color", "blue"),
Pair.create("count", "42"));
testRoute(route).run(HttpRequest.POST("/").withEntity(formDataDiffKey.toEntity()))
.assertEntity("The form fields are color = 'blue', count = '42'");
final FormData formDataSameKey =
FormData.create(
Pair.create("x", "1"),
Pair.create("x", "5"));
testRoute(route).run(HttpRequest.POST("/").withEntity(formDataSameKey.toEntity()))
.assertEntity( "The form fields are x = '5'");