[英]Bean Validation on JAX-RS doesn't block an invalid request
我有一个简单的JAX-RS服务,带有JSR-303注释:
@Path("/settings")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@ValidateRequest
public interface SettingsRestService {
@POST
SettingsResponse saveSetting (@Valid @NotNull Setting setting);
}
我的Settings
课程:
public class Setting {
@NotNull(message = "Field key must exist.")
@Pattern(regexp = "^[\\w]+$",
message = "Field key must only contain alphanumeric characters and underscores.")
private String key;
@NotNull(message = "Field value must exist.")
@Size(min = 1, message = "The value of the setting must be at least 1 character.")
private String value;
...
}
当我将以下JSON对象发送到端点时:
{
"key": "aKey+",
"value": "aValue"
}
我得到这个回应:
{
exception: null
fieldViolations: [0]
propertyViolations: [0]
classViolations: [0]
parameterViolations: [1]
0: {
constraintType: "PARAMETER"
path: "SettingsRestService#saveSetting(arg0).key"
message: "Field key must only contain alphanumeric characters and underscores."
value: "aKey+"
}-
-
returnValueViolations: [0]
}
即使验证有效,请求仍将通过服务并由应用程序的其余部分处理。
有什么想法为什么不会被阻止? 我是否需要其他配置来处理验证?
WAR已部署在JBoss 6.3.3.GA上,我们使用的是Hibernate Validator 4.3.2.Final-redhat-1和resteasy-jaxrs-3.0.9.Final。
在我们的案例中,似乎拦截器正在“隐藏”来自resteasy的异常。 我还没找到“为什么”,但是如果有更新,我会通知您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.