2

我有一个关于 JSR 交叉归档验证的问题。我有一个基于休息的服务来获取和发布。所以我有类似的东西

@GET
ItemOfferId getItem(String)

另一个是

@Post
boolean setItem(ItemOfferId)

在 ItemOfferId 类中,我有名为 @validoffer 的类级别注释。所以我喜欢这门课

@validOffer
Class ItemOfferId{
  OfferId offer;
  ItemId item;
}


@Target({ ElementType.TYPE })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { OfferValidator.class })
public @interface  ValidOffer {

  String message() default "";
  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};
}

public class Validator implements ConstraintValidator<ValidOffer,ItemOfferId>{
  //i get here ItemOfferId object and do my custom validation
}

现在我的问题是,有一些特定于“get”服务的约束,有些特定于“Set”服务。get 和 set 方法都使用相同的对象。有没有办法告诉注解它是 get 打开 get 验证。所以基本上我想根据运行时方法调用传递一些参数..?

是否可以..?我在互联网上搜索了很多,但找不到答案……如果我能找到解决这个问题的方法,那就太好了。

谢谢, 斯瓦蒂

4

1 回答 1

0

您是否考虑过使用带有值的自定义 JSR 303 约束。然后验证器使用该值来确定应该如何验证它。

因此,在您的情况下,您将在 post 上使用验证器的不同值或获取验证以告诉它在哪种模式下进行验证。

这里有一个例子,它准确地显示了你需要做什么见 3.1 创建一个简单的约束

于 2013-10-01T16:18:45.657 回答