ดูเหมือนว่าฉันจะไม่สามารถหาบทสรุปที่แยกแยะความแตกต่างระหว่างคำอธิบายประกอบทั้งสามนี้ได้
ดูเหมือนว่าฉันจะไม่สามารถหาบทสรุปที่แยกแยะความแตกต่างระหว่างคำอธิบายประกอบทั้งสามนี้ได้
คำตอบ:
@NotNull
: ออบเจ็กต์ CharSequence, Collection, Map หรือ Array ไม่เป็นโมฆะแต่สามารถว่างได้
@NotEmpty
การ CharSequence คอลเลกชันแผนที่หรือวัตถุอาร์เรย์คือไม่เป็นโมฆะและขนาด> 0
@NotBlank
: สตริงคือไม่เป็นโมฆะและตัดความยาวเป็นจำนวนมากกว่าศูนย์
เพื่อช่วยให้คุณเข้าใจเรามาดูกันว่าข้อ จำกัด เหล่านี้ถูกกำหนดและดำเนินการอย่างไร (ฉันใช้เวอร์ชัน 4.1):
@NotNull
จำกัด หมายถึง:
@Constraint(validatedBy = {NotNullValidator.class})
คลาสนี้มีisValid
วิธีการที่กำหนดเป็น:
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
return object != null;
}
@NotEmpty
จำกัด หมายถึง:
@NotNull
@Size(min = 1)
ดังนั้นข้อ จำกัด นี้ใช้@NotNull
ข้อ จำกัด ข้างต้นและ @Size
มีความหมายแตกต่างกันไปขึ้นอยู่กับวัตถุ แต่ควรจะ explanitory ตนเอง
ในที่สุด@NotBlank
ข้อ จำกัด ถูกกำหนดเป็น:
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
ดังนั้นข้อ จำกัด นี้ยังใช้@NotNull
ข้อ จำกัด แต่ยังใช้กับคลาส NotBlankValidator ด้วย คลาสนี้มีisValid
วิธีการที่กำหนดเป็น:
if ( charSequence == null ) { //curious
return true;
}
return charSequence.toString().trim().length() > 0;
ที่น่าสนใจคือวิธีนี้จะคืนค่าจริงถ้าสตริงเป็นโมฆะ แต่เป็นเท็จถ้าและเฉพาะในกรณีที่ความยาวของสตริงที่ตัดแต่งเป็น 0 มันก็โอเคที่มันจะคืนค่าเป็นจริงถ้ามันเป็นโมฆะเพราะตามที่ฉันได้กล่าวไป@NotEmpty
คำจำกัดความก็ต้องการ@NotNull
เช่นกัน
นี่คือตัวอย่างบางส่วน:
ชื่อสตริง = null;
@NotNull
: เท็จ
@NotEmpty
: เท็จ
@NotBlank
: เท็จ
ชื่อสตริง = "";
@NotNull
: จริง
@NotEmpty
: เท็จ
@NotBlank
: เท็จ
ชื่อสตริง = "";
@NotNull
: จริง
@NotEmpty
: จริง
@NotBlank
: เท็จ
String name = "คำตอบที่ดี!";
@NotNull
: จริง
@NotEmpty
: จริง
@NotBlank
: จริง
ConstraintValidator
ที่เกี่ยวข้องกับคำอธิบายประกอบเหล่านี้ได้อีกต่อไป
ฉันชอบคำอธิบายในลิงค์ด้านล่าง: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull: ตรวจสอบว่าค่าไม่เป็นโมฆะโดยไม่คำนึงถึงเนื้อหา
@NotEmpty: ตรวจสอบว่าค่าไม่เป็นโมฆะหรือว่างเปล่า หากมีเพียงช่องว่างก็จะปล่อยให้เป็นช่องว่าง
@NotBlank: ตรวจสอบว่าค่าไม่เป็นโมฆะหรือว่างเปล่าโดยตัดทอนค่าก่อน หมายความว่าจะไม่อนุญาตให้มีพื้นที่ว่าง
ดังนั้นหากคุณต้องการตรวจสอบความถูกต้องว่าเขตข้อมูลนั้นไม่เป็นโมฆะ แต่ด้วยว่าไม่ได้มีเพียงช่องว่าง แต่เป็นข้อความคุณควรใช้ @NotBlank
@NotNull:
CharSequence, Collection, Map หรือ Array ที่มีข้อ จำกัด นั้นใช้ได้ตราบเท่าที่ไม่เป็นโมฆะ แต่สามารถว่างได้@NotEmpty:
CharSequence, Collection, Map หรือ Array ที่มีข้อ จำกัด นั้นใช้ได้ตราบเท่าที่ไม่เป็นโมฆะและขนาด / ความยาวมากกว่าศูนย์@NotBlank:
สตริงที่ถูก จำกัด สามารถใช้ได้ตราบเท่าที่ไม่เป็นโมฆะและความยาวที่ตัดแต่งมีค่ามากกว่าศูนย์