POST要求に対して@FormParamsが空ではないことをどのように検証するのですか? バージョン0.9.3のDropwizardを使用しています。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>
は、以前私が@QueryParamため@NotEmptyを使用しましたし、それはうまくいった。私は、クライアントが(400不正なリクエスト)のようなものを受信したい :
{
"errors": [
"query param title may not be null",
]
}
私はNonEmptyStringParamを使用して試したがdropwizard 0.9.0 で導入されたが、それは動作しませんでした。助言がありますか?
EDIT:
マニュアルは、次の状態:「あなたは、検証が必要なオプションのフィールドまたはパラメータを持っている場合は、それに@UnwrapValidatedValueアノテーションを追加します。」この状況でqがOptional.absent()に評価されるようにするには、型をNonEmptyStringParamに変更します。私はこれを試しましたが、パラメータは評価されていません。
ああ、愚かな私!本当にありがとう! – Snuggles