Validation คือ การตรวจสอบ แล้วจะตรวจสอบไปทำไม ?
แน่นอนครับ web-app ที่เราสร้างขึ้นมา ต้องมีการป้องกัน user กรอกข้อมูลผิด หรือไม่ถูกต้องตามรูปแบบที่เรากำหนด หรือ กรอกข้อมูลยาวเกินไป ถ้าไม่มีการตรวจสอบ ข้อมูลก็จะถูกเก็บลงฐานข้อมูลแบบผิดๆ หรือเก็บไม่ได้เนื่องจาก ข้อมูลที่กรอกมีขนาดใหญ่เกินกว่าจะเก็บได้ ก็ทำให้ข้อมูลผิดพลาดอีก..
เมื่อผู้ใช้กรอกค่าเสร็จและกดตงลง ข้อมูลที่กรอกจะจะส่งไปที่ server แล้ว server จะทำการตรวจสอบ error หากพบ จะส่ง error message กลับมาบอกว่า ส่วนไหน error อย่างไร
เมื่อผู้ใช้กรอกค่าเสร็จและกดตงลง ข้อมูลที่กรอกจะจะส่งไปที่ server แล้ว server จะทำการตรวจสอบ error หากพบ จะส่ง error message กลับมาบอกว่า ส่วนไหน error อย่างไร
เราก็ต้องกำหนดข้อจำกัดลงไปในไฟล์ application(.groovy) ของเราที่อยู่ใน folder domain ...
รู้จักกับข้อจำกัด ซึ่งมีดังนี้...
- blank,nullable
การใช้ : blank:true,nullable:true
อธิบาย : ใช้เพื่อตรวจสอบว่ามีการเว้นว่างช่องกรอกข้อมูลไว้หรือไม่ ถ้ามีจะแจ้ง error - creditCard
การใช้ : creditCard:true
อธิบาย : ใช้เพื่อตรวจสอบรูปแบบของเลข creditCard - display
การใช้ : display:false
อธิบาย : hide the field in create.gsp and edit.gsp. - email
การใช้ : email:true
อธิบาย : ตรวจสอบรูปแบบของ email - password
การใช้ : password:true
อธิบาย : เมื่อกรอกข้อมูล เวลาที่แสดงจะถูกแปลงเป็น ***** เพื่อป้องกันบุคคลอื่นเห็น - inList
การใช้ : inList:["A","B","C"]
อธิบาย : สร้าง combo box มีข้อมูลใน list คือ A,B,C - matches
การใช้ : matches:"[a-zA-Z]+"
อธิบาย : ตัวอักษรที่ให้ใช้ ถ้าไม่ตรงก็จะแจ้ง error ตัวอย่างนี้ ให้ใช้อักษรอังกฤษ a-z,A-Z เท่านั้น ถ้าเป็นอย่างอื่นจะแจ้ง error - min,max
การใช้ : min:0,max:100----min:0.0,max:100.0
อธิบาย : ใช้กำหนดค่าต่ำสุด สูงสุด min,maxนี้ ใช้กับตัวเลข - minSize,maxSize,size
การใช้ : minSize:0,maxSize:30,size:0..30
อธิบาย : ใช้กำหนดจำนวนของ ตัวอักษร - notEqual
การใช้ : notEqual:"FOO"
อธิบาย : ใช้กำหนดไม่ให้ซ้ำกับคำที่เราต้องการ - range
การใช้ : range:0..100
อธิบาย : สร้าง combo box ให้เลือก ตั้งแต่ 0 ถึง 100 - scale
การใช้ : scale:2
อธิบาย : กำหนดจุดทศนิยมของตัวเลข - unique
การใช้ : unique:true
อธิบาย : ตรวจสอบว่าซ้ำกันใน Database ไหม เช่น ใช้ตรวจสอบ user ID ที่ใช้สมัคร - url
การใช้ : url:true
อธิบาย : ทำให้แน่ในว่าค่าที่กรอกเป็น รูปแบบของ url - validator
การใช้ : validator:{return(it%2)==0}
อธิบาย : ใ้ช้กำหนด validation ตามแบบของคุณเอง
ตอนนี้เราก็รู้จักแล้วว่าสามารถตรวจสอบ หรือ ใส่ข้อกำหนดแบบไหนได้บ้าง มาดู code ตัวอย่างกัน..
-------------------------------------------------
class Race {
//ส่วนที่เราจะเชคก็ให้เอามาใส่ไว้ใน constraints แบบนี้...
static constraints = {
name(blank:false,maxSize:20)
startDate(validator: {return(it > new Date())})
city()
stage(inList:["GA", "NC", "SC"])
distance(min:0.0)
cost(min:0.0,max:100.0)
maxRunners(min:0,max:100000)
}
String name
Date startDate
String city
String stage
BigDecimal distance
BigDecimal cost
Integer maxRunners = 100000
BigDecimal inMiles(){ return distance*0.6214 }
static hasMany = [registrations:Registration,locations:Location,sponsors:Company]
}
-------------------------------------------------
Changing Error Messages การเปลี่ยนข้อความ error
จะอยู่ใน /...grails-app/i18n/messages.properties ใส่เพิ่มไปตามนี้เลย...
หรือ จะใส่ข้อความ error เป็นภาษาใดก็ได้นะครับ ใส่หลังเครื่องหมาย =
จะอยู่ใน /...grails-app/i18n/messages.properties ใส่เพิ่มไปตามนี้เลย...
หรือ จะใส่ข้อความ error เป็นภาษาใดก็ได้นะครับ ใส่หลังเครื่องหมาย =
race.name.blank=plsese provide a Name for this Race
race.name.maxSize.exceeded=Sorry, but a Race Name can't be more than {3} letter
race.distance.min.notmet=A Distance of {2}? What are u trying to do, run backwards?
race.maxRunners.min.notmet=Max Runer must be more than {3}
race.maxRunners.max.exceeded=Max Runer must be less than {3}
race.cost.min.notmet=Cost must be more than {3}
race.cost.max.exceeded=Cost must be less than {3}
race.startDate.validator.invalid=sorry, but the past is the past.
-------------------------------------------------
{0} คือ ชื่อ property เช่น name
{1} คือ ชื่อ class เช่น Race
{2} คือ ค่าจากช่องกรอก
{3} to {4} คือ ช่วง เช่น 0 to 10
เราอยากจะให้แสดงตรงไหนก็ใส่ไป
เสร็จแล้ว save ลองแบบเดิมอีกครั้ง...{1} คือ ชื่อ class เช่น Race
{2} คือ ค่าจากช่องกรอก
{3} to {4} คือ ช่วง เช่น 0 to 10
เราอยากจะให้แสดงตรงไหนก็ใส่ไป
จะเห็นว่าข้อความได้เปลี่ยนไปตามที่เรากำหนดแล้ว...
A Haa! มันช่างง่ายดายจริงๆ ใช่ไหมหละครับ ถ้าต้องตรวจสอบแบบนี้ ถ้าไม้ใช่ Grails นี่ยากอยู่น้า...
No comments:
Post a Comment