diff --git a/g/net/ghttp/ghttp_server_router.go b/g/net/ghttp/ghttp_server_router.go index e7420e195..b144461fa 100644 --- a/g/net/ghttp/ghttp_server_router.go +++ b/g/net/ghttp/ghttp_server_router.go @@ -196,11 +196,19 @@ func (s *Server) patternToRegRule(rule string) (regrule string, names []string) } switch v[0] { case ':': - regrule += `/([\w\.\-]+)` - names = append(names, v[1:]) + if len(v) > 1 { + regrule += `/([\w\.\-]+)` + names = append(names, v[1:]) + break + } + fallthrough case '*': - regrule += `/{0,1}(.*)` - names = append(names, v[1:]) + if len(v) > 1 { + regrule += `/{0,1}(.*)` + names = append(names, v[1:]) + break + } + fallthrough default: // 特殊字符替换 v = gstr.ReplaceByMap(v, map[string]string{ diff --git a/g/util/gvalid/gvalid.go b/g/util/gvalid/gvalid.go index 174d93eb4..b28e8ce22 100644 --- a/g/util/gvalid/gvalid.go +++ b/g/util/gvalid/gvalid.go @@ -453,17 +453,17 @@ func CheckStruct(st interface{}, rules map[string]string, msgs...map[string]inte } // 错误提示 if len(msg) > 0 { - ruleArray := strings.Split(match[1], "|") - msgArray := strings.Split(match[2], "|") + ruleArray := strings.Split(rule, "|") + msgArray := strings.Split(msg, "|") for k, v := range ruleArray { if len(msgArray[k]) == 0 { continue } array := strings.Split(v, ":") - if _, ok := errMsgs[field.Name()]; !ok { - errMsgs[field.Name()] = make(map[string]string) + if _, ok := errMsgs[name]; !ok { + errMsgs[name] = make(map[string]string) } - errMsgs[field.Name()].(map[string]string)[array[0]] = msgArray[k] + errMsgs[name].(map[string]string)[array[0]] = msgArray[k] } } } diff --git a/geg/util/gvalid/gvalid_struct.go b/geg/util/gvalid/gvalid_struct.go index 4d3ead963..e1d66ef1c 100644 --- a/geg/util/gvalid/gvalid_struct.go +++ b/geg/util/gvalid/gvalid_struct.go @@ -21,7 +21,7 @@ func main() { // 使用结构体定义的校验规则和错误提示进行校验 gutil.Dump(gvalid.CheckStruct(user, nil)) - +return // 自定义校验规则和错误提示,对定义的特定校验规则和错误提示进行覆盖 rules := map[string]string { "Uid" : "required",