Как проверить, что @FormParams для запроса POST не пуст? Мы используем Dropwizard версии 0.9.3.Dropwizard Validate @FormParam
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response addCard(@FormParam("title") @NotEmpty String title,
@FormParam("latitude") @NotNull Double latitude,
@FormParam("longitude") @NotNull Double longitude,
@FormParam("public") @NotNull Boolean publicCard,
@FormParam("user_id") @NotNull Integer userId) {
Отправка запроса POST без заголовка парам дает эту ошибку сервера:
!org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=text/html, type=class io.dropwizard.jersey.validation.ValidationErrorMessage, genericType=class io.dropwizard.jersey.validation.ValidationErrorMessage.
И клиент получает:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 500 Request failed.</title>
</head>
<body>
<h2>HTTP ERROR 500</h2>
<p>Problem accessing /cards. Reason:
<pre> Request failed.</pre>
</p>
<hr>
<i>
<small>Powered by Jetty://</small>
</i>
<hr/>
</body>
</html>
Раньше я использовал @NotEmpty для @QueryParam и это сработало хорошо. Я хочу, чтобы клиент получить что-то вроде (400 Bad Request):
{
"errors": [
"query param title may not be null",
]
}
Я попытался с помощью NonEmptyStringParam введена в dropwizard 0.9.0 , но это не сработало. Какие-либо предложения?
EDIT:
В документации говорится следующее: «Если у вас есть Необязательное поле или параметр, который нуждается в проверках, добавьте @UnwrapValidatedValue аннотации на нем.» и «Если вы хотите, чтобы q оценил значение Optional.absent() в этой ситуации, измените тип на NonEmptyStringParam». Я пробовал это, но параметр не оценивался.
О, глупо меня! Огромное спасибо! – Snuggles