5

私はJavaが初めてで、遊んでいます。サンプル アプリケーションを使用します。このファイルで何が起こっているのかを理解するのを手伝ってもらえますか? https://github.com/playframework/Play20/blob/master/samples/java/forms/app/models/User.java

このインターフェイスを「public interface All {}」と宣言する理由と、この検証でどのように使用されているかがわかりません。"@Required(groups = {All.class, Step1.class})"

4

1 に答える 1

11

@RequiredPlayフレームワーク内で作成されたカスタムJSR-303アノテーションです。JSR-303は、JavaBeansの検証の仕様であり、特定のJavaBeansの値が一連の制約内にあることを確認できます。いくつかの標準的な検証アノテーションの例:

  • @Max-注釈付き要素は、指定された最大値以下の値である必要がある数値である必要があります。
  • @Min-注釈付き要素は、指定された最小値以上の値である必要がある数値である必要があります。
  • @NotNull-注釈付き要素はnullであってはなりません。

各JSR-303アノテーションでは、グループを定義できます。各グループは実際には単なるクラスです。これらのグループを使用して、特定のBeanの検証のサブセットを実行できます。特定の例では、実装者はこれらのグループを表す2つのインターフェースを定義しています-AllStep1。次に、それらの検証がグループに属していることを示すために、検証アノテーションにグループを追加します。したがって、以下のクラスの場合:

public class MyBean {
    @Required(groups = {All.class, Step1.class})
    @MinLength(value = 4, groups = {All.class})
    public String username;
}

MyBean bean = new MyBean();
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

以下は、フィールドの検証を実行@Requiredします。@MinLengthusername

validator.validate(bean, All.class);

一方、以下は(フィールド@Requiredの)検証のみを実行します。username

validator.validate(bean, Step1.class);
于 2013-03-06T01:15:03.800 に答える