簡體   English   中英

Java自定義驗證批注

[英]Java custom validation annotation

    public class Student{
    @NotNull
    private Course course= null;

    @CustomValidation(enumCourse = course)
    private String details = null;
    }
}

如何將課程變量傳遞給CustomValidation批注? 我收到一個錯誤消息,說課程必須是一個枚舉常量表達式。

我也寫了一個自定義的驗證界面和驗證器。

注釋屬性在編譯時必須恆定。

您不能在那里使用變量。

這里的關鍵字是cross fields validation

您有兩種選擇:

  1. 在課程級別創建注釋。 在那里您可以訪問類的所有屬性,並且驗證應該很容易
  2. 或在方法級別創建注釋,該注釋將返回所有必需的字段以進行驗證。

     @CustomAnnotations Pair<Course, String> getCourseAndDetailForValidation() { return Pair.of(course, details) } 

    您可以更改返回類型以匹配您的喜好,可能是列表,數組,包裝對象...

它由JLS的9.6.1節指定。 注釋成員類型必須是以下之一:

原始String類一個Enum另一個Annotation上面任何一個的數組

課程必須是這些類型之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM