表单数据验证与结合体的使用2-structTag 校验

code

controller

package controllers

import (
    "fmt"
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/validation"
)

type ValidController struct {
    beego.Controller
}

type User struct {
    // 前端的uname首字母是小写的 需要指定
    Uname string `form:"uname" valid:"Required"`
    Pwd   string `form:"pwd" valid:"Required"`
}

// 关闭ValidController的xsrf保护
func (this *ValidController) Prepare()  {
    this.EnableXSRF = false

}

func (this *ValidController)Get()  {
    this.TplName = "validate.html"
}
func (this *ValidController)Post() { 
    // 把前端form表单的数据解析到自己定义的结构体中

    var user User
    err := this.ParseForm(&user)
    if err != nil {
        fmt.Println(err)
        return
    }


    // 校验数据
    valid := validation.Validation{}
    
    // 修改默认 required 的字段提示"Required":     "Can not be empty",为 "Required": "数据不能为空"
        var msg = map[string]string{
            "Required": "数据不能为空",
        }
        validation.SetDefaultMessage(msg)

        // structTag 校验

        b, err1 := valid.Valid(&user)
        if err1 != nil {
            fmt.Println(err1)
            return
        }
        if !b {
            for _, v := range valid.Errors {
                fmt.Println(v.Key)
                fmt.Println(v.Message)
            }
        }

    this.TplName = "validate.html"
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。