2015-03-23 15 views
10

Sự khác nhau giữa các ràng buộc trống và rỗng là gì?Sự khác biệt giữa các ràng buộc trống và rỗng

Tôi đã lớp sau

class Task { 

    String title 
    String notes 
    TekUser assignedTo 
    Date dueDate 
    TekEvent event 

    static constraints = { 
     title blank:false 
     notes blank: true , maxSize: 5000 
     assignedTo nullable:true 
     dueDate nullable:true 
    } 

    static belongsTo = TekEvent 
} 

và bảng mysql tạo đã ghi chú thiết lập để không null mặc dù tôi đã chỉ định notes blank : true

tác động gì trống: đúng có?

Trả lời

13
  • blank:true có nghĩa là trường chấp nhận chuỗi rỗng hoặc chỉ được tạo bởi khoảng trắng làm giá trị hợp lệ. Ví dụ: "", " "
  • nullable:true nghĩa lĩnh vực này chấp nhận giá trị null là hợp lệ

Chúng có thể được sử dụng cùng nhau. Ví dụ:

title blank:false, nullable: true 
+0

nhưng tôi vẫn không thể hiểu tại sao cột 'ghi chú' được đặt thành' không null' trong bảng? – SK176H

+2

Theo mặc định Grails không cho phép các giá trị null cho các thuộc tính (ví dụ: nullable: false).Nếu bạn muốn có một giá trị null bạn cần phải thể hiện nó một cách rõ ràng -> nullable: true – aruizca

+2

Do đó những hạn chế bạn có thể muốn cho các ghi chú cột là: nullable: đúng, trống: đúng, MAXSIZE: 500 – aruizca

5

Trong khi câu trả lời bằng cách aruizca là chính xác và mô tả, tôi thấy điều này trong khi đọc cuốn sách: "Grails trình" bởi Burt Beckwith.

Blanks Versus Nulls Trong nhiều trường hợp, một chuỗi trống và null là tương đương-không có giá trị thiết lập. Nhưng các yêu cầu HTTP từ web yêu cầu POST của trình duyệt gửi các chuỗi trống cho các đầu vào không có giá trị. Điều này sẽ không xảy ra với dữ liệu không phải HTTP, chẳng hạn như từ các khách hàng bên ngoài khác như dịch vụ web hoặc trong quá trình thử nghiệm, do đó chuyển đổi khoảng trống thành null cho tầng HTTP sẽ giúp đơn giản hóa xác thực. Trong khi chúng tôi đang ở đó, chúng tôi cũng có thể cắt thêm khoảng trắng từ các giá trị được gửi .

Nó có thể không liên quan đến câu hỏi của bạn. Câu trả lời của Aruizca là tất cả những gì bạn cần, nhưng đây có thể là thông tin bổ sung về Blanks và Nulls.

+0

Điểm tuyệt vời! Nó hoàn toàn có ý nghĩa đối với Grails để làm điều đó! –

1

Câu trả lời khác đều đúng, nhưng để giải quyết câu hỏi của bạn:

mysql bảng tạo ra có các ghi chú thiết lập để không null mặc dù tôi ghi chú cụ thể trống: đúng

tác động gì trống : có đúng không?

blank: false bảo vệ giá trị trống (ví dụ: "", "", v.v) không được đặt trên trường đó. Điều này không liên quan gì đến trường có ràng buộc NOT NULL trên mysql. Điều đó xảy ra vì Grails hạn chế mặc định thành nullable: false trên mọi trường trừ khi bạn đặt rõ ràng thành nullable: true.

+0

hiện trường có hạn chế 'nullable: false' chấp nhận chuỗi rỗng nếu constrain' blank' không được đưa ra? –

+0

Chỉ cần kiểm tra, hành vi mặc định là như vậy mà một chuỗi trống sẽ không xác nhận cho 'nullable: false' kể từ khi binder dữ liệu sẽ chuyển đổi chuỗi trống để null. –

Các vấn đề liên quan