环境:Dropwizard 0.8.1,Java 1.8
我无法获得Dropwizard的验证支持。我相信我会按照手册的建议进行操作。例如,使用以下资源(以及在模型类属性上使用@Valid的变体,使用@Validated而不是@Valid,hibernate' s @NotEmpty而不是javax.validation.constraints.NotNull等):
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TestResource {
static public class ModelClass {
@JsonProperty("only_null") @Null public String onlyNull;
@JsonProperty("not_null") @NotNull public String notNull;
}
@PUT
public ModelClass testContainer(@Valid ModelClass record) {
return record;
}
}
如果我提出以下内容:
{"only_null":"shouldFail"}
而不是预期的422,我回来了:
{"only_null":"shouldFail","not_null":null}
我在这里缺少什么?是否有一些配置需要打开以启用我错过的验证?
答案 0 :(得分:1)
您的代码适合我。我使用了以下注释:
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
仔细检查您发送请求的方式。我使用curl
发送请求:
$ curl -v -X PUT 'http://localhost:8080/test' -H 'Content-Type: application/json' -d '{"only_null":"shouldFail"}'
< HTTP/1.1 422
{"errors":["notNull may not be null (was null)","onlyNull must be null (was shouldFail)"]}