diff --git a/validation/util.go b/validation/util.go index 2e34173c..6d953fbb 100644 --- a/validation/util.go +++ b/validation/util.go @@ -120,7 +120,7 @@ func getRegFuncs(tag, key string) (vfs []ValidFunc, str string, err error) { if err != nil { return } - vfs = []ValidFunc{ValidFunc{"Match", []interface{}{reg, key}}} + vfs = []ValidFunc{ValidFunc{"Match", []interface{}{reg, key + ".Match"}}} str = strings.TrimSpace(tag[:index]) + strings.TrimSpace(tag[end+len("/)"):]) return } @@ -145,7 +145,7 @@ func parseFunc(vfunc, key string) (v ValidFunc, err error) { err = fmt.Errorf("%s require %d parameters", vfunc, num) return } - v = ValidFunc{vfunc, []interface{}{key}} + v = ValidFunc{vfunc, []interface{}{key + "." + vfunc}} return } @@ -167,7 +167,7 @@ func parseFunc(vfunc, key string) (v ValidFunc, err error) { return } - tParams, err := trim(name, key, params) + tParams, err := trim(name, key+"."+name, params) if err != nil { return } diff --git a/validation/validation_test.go b/validation/validation_test.go index 2dc51c39..de9aa21a 100644 --- a/validation/validation_test.go +++ b/validation/validation_test.go @@ -298,6 +298,7 @@ func TestValid(t *testing.T) { } uptr := &user{Name: "test", Age: 40} + valid.Clear() b, err = valid.Valid(uptr) if err != nil { t.Fatal(err) @@ -305,8 +306,15 @@ func TestValid(t *testing.T) { if b { t.Error("validation should not be passed") } + if len(valid.Errors) != 1 { + t.Fatalf("valid errors len should be 1 but got %d", len(valid.Errors)) + } + if valid.Errors[0].Key != "Name.Match" { + t.Errorf("Message key should be `Name.Match` but got %s", valid.Errors[0].Key) + } u = user{Name: "test@/test/;com", Age: 180} + valid.Clear() b, err = valid.Valid(u) if err != nil { t.Fatal(err) @@ -314,4 +322,10 @@ func TestValid(t *testing.T) { if b { t.Error("validation should not be passed") } + if len(valid.Errors) != 1 { + t.Fatalf("valid errors len should be 1 but got %d", len(valid.Errors)) + } + if valid.Errors[0].Key != "Age.Range" { + t.Errorf("Message key should be `Name.Match` but got %s", valid.Errors[0].Key) + } }