2016-07-13 2 views
0

Как проверить, что @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». Я пробовал это, но параметр не оценивался.

ответ

1

Вы хотите, чтобы ответ пришел в форме json. Вам нужно добавить produces поверх вашего метода.

@Produces(MediaType.APPLICATION_JSON) 

Это должно решить вашу проблему.

+0

О, глупо меня! Огромное спасибо! – Snuggles