日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jodd-vtor验证框架

發(fā)布時(shí)間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jodd-vtor验证框架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

VTor是一個(gè)編程式驗(yàn)證框架,適用于任意java對(duì)象的驗(yàn)證。它是一個(gè)快速、微型的、專注于驗(yàn)證的框架。也可以通過注解或者手動(dòng)設(shè)置驗(yàn)證條件。驗(yàn)證條件也可以在profile中分組。VTor是可擴(kuò)展的,用戶很容易使用自定義的驗(yàn)證條件。默認(rèn)情況下,驗(yàn)證條件以java編寫,但也很容易擴(kuò)展它,使用xml或者其它編程語言來定義驗(yàn)證表達(dá)式。

Validation in action

VTor的驗(yàn)證過程包括:

  定義校驗(yàn)檢查(如應(yīng)用的驗(yàn)證條件)。

  在目標(biāo)對(duì)象(通常指java bean對(duì)象)執(zhí)行這些規(guī)則。

  檢查驗(yàn)證結(jié)果。

示例:

ValidationContext vctx = new ValidationContext();vctx.add(new Check("boo", new MinLengthConstraint(2)));

上面的代碼片段在VTOR驗(yàn)證上下文中定義了一個(gè)簡(jiǎn)單check,這個(gè)check定義了boo屬性的最小長(zhǎng)度。

現(xiàn)在,驗(yàn)證一些bean試試:

Vtor vtor = new Vtor();vtor.validate(vctx, fooBeanInstance);

驗(yàn)證已經(jīng)執(zhí)行。唯一要做的事情是檢查驗(yàn)證結(jié)果:

List<Violation> vlist = vtor.getViolations();

當(dāng)驗(yàn)證成功后,返回list是null。反正list包含了一組驗(yàn)證失敗的沖突。非常簡(jiǎn)單,是吧?

Default constraints

VTor包含了很多通用的驗(yàn)證條件,如:

MaxConstraint,MinConstraint,RangeConstraint--定義了最大、最小范圍的數(shù)字值。

LengthConstraint,HasSubstringConstraint,LengthConstraint,WildcardMatchConstraint....---檢查string的值。

EqualToFieldConstraint?--檢查兩個(gè)field是否相等。

..............

想要查看完整的驗(yàn)證條件請(qǐng)查看VTor的javadoc。

VTor annotations

當(dāng)需要多行驗(yàn)證時(shí),VTor支持使用注解來簡(jiǎn)化使用。下面使用注解來重寫上面的示例:

public class Foo {@MinLength(2)String boo; // getters/setters are optional}

現(xiàn)在驗(yàn)證可以使用很少幾行來完成:

Vtor vtor = new Vtor();vtor.validate(fooInstance);System.out.println(vtor.hasViolations());

就是如此簡(jiǎn)單。

Profiles

  當(dāng)一個(gè)bean不能使用不同set的驗(yàn)證條件例如rule組進(jìn)行驗(yàn)證時(shí),使用注解的問題就爆發(fā)了。

例如:例如一個(gè)用戶模型對(duì)象,在創(chuàng)建和更新用戶時(shí)的驗(yàn)證不同:創(chuàng)建時(shí)需要檢查username是否唯一。這個(gè)時(shí)候就用到VTor的profile。

  Profile是一組驗(yàn)證條件的組合名稱。VTor注解也可以指明Profile組別.

@MinLength(value = 2, profiles = {"p1,p2"})String boo;

編程形式如下:

Vtor vtor = new Vtor();vtor.useProfiles("p1", "p2");vtor.validate(fooInstance);

特殊的profile名稱:

  *(通配符,代表所有的)--用在注釋中,意思是一些驗(yàn)證條件屬于所有的profile。因此為了不用寫出所有的profile名稱,可以使用這個(gè)通配符來替代。

  default --作用在默認(rèn)組的校驗(yàn)check,例如沒有顯式定義profile名稱的注解。

Excluding profiles

?  有時(shí),需要從一個(gè)或者多個(gè)profile中排除一個(gè)check(由注解驗(yàn)證條件定義的)。不用寫下除了要排除掉的所有的profile名稱,使用一個(gè)減號(hào)('-')作為前綴來排除一個(gè)profile,如(-p2).

  注意:排除profile名具有更高的優(yōu)先級(jí)。

因而,即便一些check屬于一個(gè)嚴(yán)重級(jí)別的profile,若存在一個(gè)排除profile,check將不會(huì)執(zhí)行。

Must-have profiles

  若存在至少一個(gè)匹配的profile,check將會(huì)執(zhí)行。有時(shí),我們需要在所有的profile都有的check才執(zhí)行,為達(dá)成這個(gè)目的,只要將加好("+")置于profile名稱前面即可。

Severity

  級(jí)別時(shí)一個(gè)簡(jiǎn)單的檢驗(yàn)權(quán)值,低于該指定級(jí)別的所有check將不會(huì)執(zhí)行。

Profiles summary

// match profiles 'p1' OR 'p2'@FooCheck(profiles = {"p1", "p2"})// match profiles 'default' OR 'p2'@FooCheck(profiles = {"default", "p2"})// match 'p1' OR 'p3' ONLY IF 'p2' does NOT match@FooCheck(profiles = {"p1", "-p2", "p3"})// match profiles 'p1' AND 'p2'@FooCheck(profiles = {"+p1", "+p2"})

?

Misc

?增加自定義的violation。

  VTor允許用戶增加自定義的violation,而不僅僅是檢驗(yàn)條件。例如:

vtor.addViolation(new Violation("number", foo, null));

這種形式下,甚至是驗(yàn)證本身都可以在VTor之外執(zhí)行,然后傳遞結(jié)果到框架中。

Use constraints directly

  絕大部分的VTor驗(yàn)證條件可以直接執(zhí)行,使用驗(yàn)證類的靜態(tài)方法validate().示例如下:

boolean valid = MinLengthConstraint.validate("value", 3);

結(jié)束!yeah!

?

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/4648300.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Jodd-vtor验证框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。