go-playground / validator

:100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
MIT License
16.41k stars 1.3k forks source link

empty pointer string with `omitempty,base64` get invalid err #1129

Open JokerCatz opened 1 year ago

JokerCatz commented 1 year ago

Package version eg. v9, v10: v10

Issue, Question or Enhancement:

if empty pointer string with omitempty,base64 will get base64 error , in doc say if need allow empty string , just use omitempty, original doc :

This validates that a string value contains a valid base64 value. Although an empty string is valid base64 this will report an empty string as an error, if you wish to accept an empty string as valid you can use this with the omitempty tag.

Code sample, to showcase or reproduce:

package main

import (
    "github.com/go-playground/validator/v10"
)

func main() {
    emptyString := ""
    data := struct {
        Str        string  `validate:"omitempty,base64,max=1500"`
        StrPointer *string `validate:"omitempty,base64,max=1500"`
    }{
        Str:        emptyString,
        StrPointer: &emptyString,
    }
    panic(validator.New().Struct(data))
}

// => panic: Key: 'StrPointer' Error:Field validation for 'StrPointer' failed on the 'base64' tag
Zvirovyi commented 1 year ago

v9 also has this issue