2012-07-08 24 views
6

Tôi mới sử dụng Grails. Tôi có một lớp miền Person như:Giàn giáo Grails - xác định các giá trị có thể cho thuộc tính này của một lớp miền

class Person { 
    String firstName 
    String lastName 
    String gender 
    Date dateOfBirth 
} 

Và tự hỏi nếu tôi có thể xác định giá trị có thể cho một tài sản - nói giới như {M, F, U} để ba giá trị này sẽ được liệt kê trong combo box khi sử dụng giàn giáo động cho bộ điều khiển Person.

Ở đây tôi chỉ muốn biết liệu có tính năng như vậy trong khung Grails không? Nếu tính năng này tồn tại thì tôi có thể sử dụng nó như thế nào?

Trả lời

5

Từ các tài liệu http://grails.org/doc/latest/guide/scaffolding.html, bạn sẽ có thể sử dụng một chế inList:

class Person { 
    String firstName 
    String lastName 
    String gender 
    Date dateOfBirth 

    def constraints = { 
     gender(inList: ["M", "F", "U"]) 
    } 
} 

này nên giàn giáo vào một danh sách chọn cho lĩnh vực giới tính, tùy thuộc vào phiên bản của Grails bạn đang sử dụng. 2.0+ chắc chắn thực hiện điều này.

3

Dưới đây là một giải pháp thay thế

class Person { 
    String firstName 
    String lastName 
    enum Gender { 
     M(1), 
     F(2), 
     U(3) 
     private Gender(int val) { this.id = val } 
     final int id 
    } 
    Gender gender = Gender.U 
    Date dateOfBirth 

    def constraints = { 
     gender() 
    } 
} 

này sẽ lưu giữ giới trong cơ sở dữ liệu là một số nguyên (1,2,3) và mặc định giới tính để U. Lợi ích ở đây là bạn có thể đổi tên gì F, M, và U có nghĩa là không xử lý việc di chuyển dữ liệu.

+0

thay thế tốt, cảm ơn. – gtiwari333

+0

logic tốt cho danh sách mặc định .. – sanghavi7

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