Fix validator's translator init issue

This issue may cause an unrecoverable panic when concurrent requests to the server with the wrong parameters.
This commit is contained in:
0xJacky 2022-04-23 09:51:19 +08:00
parent 8b60d61b8e
commit 74a48d3462

View file

@ -24,17 +24,22 @@ type ValidError struct {
Message string
}
var trans ut.Translator
func init() {
uni := ut.New(zh.New())
trans, _ = uni.GetTranslator("zh")
v, ok := binding.Validator.Engine().(*val.Validate)
if ok {
_ = zhTranslations.RegisterDefaultTranslations(v, trans)
}
}
func BindAndValid(c *gin.Context, target interface{}) bool {
errs := make(map[string]string)
err := c.ShouldBindJSON(target)
if err != nil {
log.Println("raw err", err)
uni := ut.New(zh.New())
trans, _ := uni.GetTranslator("zh")
v, ok := binding.Validator.Engine().(*val.Validate)
if ok {
_ = zhTranslations.RegisterDefaultTranslations(v, trans)
}
verrs, ok := err.(val.ValidationErrors)