@@ -25,7 +25,7 @@ import (
2525
2626 "github.com/go-spring/spring-base/code"
2727 "github.com/go-spring/spring-base/util"
28- "github.com/go-spring/spring-core/expr "
28+ "github.com/go-spring/spring-core/validate "
2929)
3030
3131var (
@@ -145,23 +145,11 @@ func BindValue(p *Properties, v reflect.Value, t reflect.Type, param BindParam,
145145 return nil
146146 }
147147
148- validate := func (input string , val interface {}) error {
149- if input == "" {
150- return nil
151- }
152- if b , err := expr .Eval (input , val ); err != nil {
153- return err
154- } else if ! b {
155- return fmt .Errorf ("validate failed on %q for value %v" , input , val )
156- }
157- return nil
158- }
159-
160148 switch v .Kind () {
161149 case reflect .Uint , reflect .Uint8 , reflect .Uint16 , reflect .Uint32 , reflect .Uint64 :
162150 var u uint64
163151 if u , err = strconv .ParseUint (val , 0 , 0 ); err == nil {
164- if err = validate ( param .Validate , u ); err != nil {
152+ if err = validate . Field ( u , param .Validate ); err != nil {
165153 return err
166154 }
167155 v .SetUint (u )
@@ -171,7 +159,7 @@ func BindValue(p *Properties, v reflect.Value, t reflect.Type, param BindParam,
171159 case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
172160 var i int64
173161 if i , err = strconv .ParseInt (val , 0 , 0 ); err == nil {
174- if err = validate ( param .Validate , i ); err != nil {
162+ if err = validate . Field ( i , param .Validate ); err != nil {
175163 return err
176164 }
177165 v .SetInt (i )
@@ -181,7 +169,7 @@ func BindValue(p *Properties, v reflect.Value, t reflect.Type, param BindParam,
181169 case reflect .Float32 , reflect .Float64 :
182170 var f float64
183171 if f , err = strconv .ParseFloat (val , 64 ); err == nil {
184- if err = validate ( param .Validate , f ); err != nil {
172+ if err = validate . Field ( f , param .Validate ); err != nil {
185173 return err
186174 }
187175 v .SetFloat (f )
@@ -191,15 +179,15 @@ func BindValue(p *Properties, v reflect.Value, t reflect.Type, param BindParam,
191179 case reflect .Bool :
192180 var b bool
193181 if b , err = strconv .ParseBool (val ); err == nil {
194- if err = validate ( param .Validate , b ); err != nil {
182+ if err = validate . Field ( b , param .Validate ); err != nil {
195183 return err
196184 }
197185 v .SetBool (b )
198186 return nil
199187 }
200188 return util .Wrapf (err , code .FileLine (), "bind %s error" , param .Path )
201189 case reflect .String :
202- if err = validate ( param .Validate , val ); err != nil {
190+ if err = validate . Field ( val , param .Validate ); err != nil {
203191 return err
204192 }
205193 v .SetString (val )
@@ -357,8 +345,8 @@ func bindStruct(p *Properties, v reflect.Value, t reflect.Type, param BindParam,
357345 }
358346
359347 if tag , ok := ft .Tag .Lookup ("value" ); ok {
360- validate , _ := ft .Tag .Lookup (" validate" )
361- if err := subParam .BindTag (tag , validate ); err != nil {
348+ validateTag , _ := ft .Tag .Lookup (validate . TagName () )
349+ if err := subParam .BindTag (tag , validateTag ); err != nil {
362350 return util .Wrapf (err , code .FileLine (), "bind %s error" , param .Path )
363351 }
364352 if filter != nil {
0 commit comments