如何驗證POST請求的@FormParams是否爲空? 我們使用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) {
發送無標題PARAM 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錯誤請求):
{
"errors": [
"query param title may not be null",
]
}
我使用NonEmptyStringParam在dropwizard 0.9.0 介紹,但沒有奏效嘗試。有什麼建議麼?
編輯:
文檔出現如下提示:「如果你有一個需要驗證的可選字段或參數,加上它的@UnwrapValidatedValue註解。」和「如果你想在這種情況下評估爲Optional.absent(),請將類型更改爲NonEmptyStringParam」。我試過這個,但參數不是被評估的。
哦,傻我!謝謝一堆! – Snuggles