2013-09-22 237 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