我正在使用针对JAX-RS的Jersey实现,我正在寻找一个可以在POST请求中使用Bean验证的示例。我有这个操作,例如:
@POST
@Path("document/annotations/save")
@Produces("application/json")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Map<String, Object> saveAnnotation(
@FormParam("user") String userStr,
@FormParam("documentId") String documentId,
@FormParam("documentPage") Integer documentPage,
@FormParam("annotationContent") String annotationContent,
@FormParam("annotationId") Long annotationId,
@FormParam("isMobile") Boolean isMobile) { // the code... }
我想为每个方法参数使用验证约束(@NotNull
,@Pattern
等)。我看到了这个doc,他们正在使用Seam Framework来做到这一点。
目前,我正在尝试使用javax.validation
实施来验证我的请求,但它无效。
有没有办法将JSR-303规范与JAX-RS一起使用?
TNKS。
答案 0 :(得分:2)
目前使用泽西岛是不可能的;一种可能的替代方法是编写客户资源过滤器并绑定到@NotNull
等注释。
如果它被封装在资源类中会更简单,因为您可以绑定到方法上的@Valid
注释并一次性验证bean。
因为JSR-303旨在处理bean而不是参数集合,所以当你尝试将它弯曲到你的意愿时它会变得非常冗长。
恕我直言最好不要在你的班级中保持验证,要么使用管道和过滤器模式,即ContainerRequestFilter
,要么像@Willy建议的那样使用AspectJ之类的东西。
答案 1 :(得分:2)