2013-09-22 45 views
2

我对JSR交叉提交验证有疑问。 我有一个基于休息的服务获取和发布。所以,我有类似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方法都使用同一个对象。 有没有什么办法可以告诉注解,它是获取开启验证。 所以基本上我想传递一些基于运行时方法调用的参数..?

是否有可能..? 我在网上搜了很多,但找不到答案... 这将是非常好的,如果我能找出如何解决这个问题。

感谢, 姆斯瓦蒂

+0

除非你的数据库中已经有无效的数据,在get()中验证有什么意义?在这种情况下,当前或远程系统可以做些什么? – WeaponsGrade

回答

0

你有没有使用自定义JSR 303的约束,需要一个价值考虑。该值然后由验证器用于确定应该如何验证。

所以你的情况,你会在后期使用不同的值与验证或得到验证,告诉它要验证的模式。

这里有一个例子,显示你需要做的see 3.1 Creating a simple constraint

什么
+0

感谢Mangnu对您的回复表示感谢 – swati