mirror of
https://github.com/astaxie/beego.git
synced 2024-11-05 01:50:54 +00:00
remove the double isStruct/isStructPtr check
This commit is contained in:
parent
d0e7dd686b
commit
73650e1f2b
@ -341,6 +341,7 @@ func (v *Validation) Valid(obj interface{}) (b bool, err error) {
|
|||||||
// Anonymous fields will be ignored
|
// Anonymous fields will be ignored
|
||||||
func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
|
func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
|
||||||
//Step 1: validate obj itself firstly
|
//Step 1: validate obj itself firstly
|
||||||
|
// fails if objc is not struct
|
||||||
pass, err := v.Valid(objc)
|
pass, err := v.Valid(objc)
|
||||||
if err != nil || false == pass {
|
if err != nil || false == pass {
|
||||||
return pass, err // Stop recursive validation
|
return pass, err // Stop recursive validation
|
||||||
@ -348,23 +349,22 @@ func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
|
|||||||
// Step 2: Validate struct's struct fields
|
// Step 2: Validate struct's struct fields
|
||||||
objT := reflect.TypeOf(objc)
|
objT := reflect.TypeOf(objc)
|
||||||
objV := reflect.ValueOf(objc)
|
objV := reflect.ValueOf(objc)
|
||||||
if isStruct(objT) || isStructPtr(objT) {
|
|
||||||
|
|
||||||
if isStructPtr(objT) {
|
if isStructPtr(objT) {
|
||||||
objT = objT.Elem()
|
objT = objT.Elem()
|
||||||
objV = objV.Elem()
|
objV = objV.Elem()
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < objT.NumField(); i++ {
|
for i := 0; i < objT.NumField(); i++ {
|
||||||
|
|
||||||
t := objT.Field(i).Type
|
t := objT.Field(i).Type
|
||||||
|
|
||||||
if isStruct(t) || isStructPtr(t) {
|
// Recursive applies to struct or pointer to structs fields
|
||||||
// Step 3: do the recursive validation
|
if isStruct(t) || isStructPtr(t) {
|
||||||
// Only valid the Public field recursively
|
// Step 3: do the recursive validation
|
||||||
if objV.Field(i).CanInterface() {
|
// Only valid the Public field recursively
|
||||||
pass, err = v.RecursiveValid(objV.Field(i).Interface())
|
if objV.Field(i).CanInterface() {
|
||||||
}
|
pass, err = v.RecursiveValid(objV.Field(i).Interface())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user