多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
需求: 用户访问get请i去,然后提交表单数据到post请求,在post请求中验证数据,如果验证不通过则提示不通过的消息,通过则提示成功的消息,然后重定向到get请求,get请求访问相应的页面,成功的话访问成功的页面,失败的访问失败的页面,**这就是一个消息提示,**可以使用flash来进行数据的传递 beego中的flsh: * 这不是Adobe旗下的flsh产品 * flash 对象有三个级别的设置: * Notice 提示信息 * Warning 警告信息 * Error 错误信息 * 模板中读取数据: * { {.flash.error} } //错误 { {.flash.warning} } // 警告 { {.flash.notice} } // 成功 示例: ~~~ type ValidateController struct {   beego.Controller } ​ func (c *ValidateController) Get() {   // 获取flash中的数据,如果没有则跳转到表单页,否则跳转到对应的提示页   flash:=beego.ReadFromRequest(&c.Controller)   notice := flash.Data["notice"]   err := flash.Data["error"] ​   if len(notice) != 0 {// notice提示信息有数据,跳转到成功页       c.TplName = "success.html"   }else if len(err) != 0{// error提示信息有数据,跳转到失败页       c.TplName = "error.html"   }else { // 没数据,跳转到表单页       c.TplName = "validate.html"   } ​ ​ } ​ func (c *ValidateController)Post() {   // 初始化flash   flash:=beego.NewFlash() ​   username := c.Input().Get("username")   if len(username) == 0 {       flash.Error("用户名不能为空")       flash.Store(&c.Controller)                     // 保存flash数据       c.Redirect("/flash_validate",302)               // 重定向   }else if username != "zhiliao"{       flash.Error("用户名错误")       flash.Store(&c.Controller)                     // 保存flash数据       c.Redirect("/flash_validate",302)               // 重定向   }else {       flash.Notice("验证通过")       flash.Store(&c.Controller)                     // 保存flash数据       c.Redirect("/flash_validate",302)               // 重定向   } ​ ​ } ~~~ 上面的代码执行的大概逻辑是这样的: 1. Get 方法执行,因为没有 flash 数据,所以显示设置页面。 2. 用户设置信息之后点击递交,执行 Post,然后初始化一个 flash,通过验证,验证出错或者验证不通过设置 flash 的错误,如果通过了就保存设置,然后设置 flash 成功设置的信息。 3. 设置完成后跳转到 Get 请求。 4. Get 请求获取到了 Flash 信息,然后执行相应的逻辑,如果出错显示出错的页面,如果成功显示成功的页面。