这个flash与 Adobe/Macromedia Flash没有任何关系,它主要用于在两个逻辑间传递临时数据

flash中存放的所有数据会在紧接着的下一个逻辑中调用后清除

一般用于传递提示和错误消息。它适合 Post/Redirect/Get 模式。

下面看使用的例子:

// 显示设置信息
func (c *MainController) Get() {
flash:=beego.ReadFromRequest(&c.Controller)
if n,ok:=flash.Data["notice"];ok{
// 显示设置成功
c.TplName = "set_success.html"
}else if n,ok=flash.Data["error"];ok{
// 显示错误
c.TplName = "set_error.html"
}else{
// 不然默认显示设置页面
c.Data["list"]=GetInfo()
c.TplName = "setting_list.html"
}
} // 处理设置信息
func (c *MainController) Post() {
flash:=beego.NewFlash()
setting:=Settings{}
valid := Validation{}
c.ParseForm(&setting)
if b, err := valid.Valid(setting);err!=nil {
flash.Error("Settings invalid!")
flash.Store(&c.Controller)
c.Redirect("/setting",302)
return
}else if b!=nil{
flash.Error("validation err!")
flash.Store(&c.Controller)
c.Redirect("/setting",302)
return
}
saveSetting(setting)
flash.Notice("Settings saved!")
flash.Store(&c.Controller)
c.Redirect("/setting",302)
}

上面的代码执行的大概逻辑是这样的:

  1. Get 方法执行,因为没有 flash 数据,所以显示设置页面。
  2. 用户设置信息之后点击递交,执行 Post,然后初始化一个 flash,通过验证,验证出错或者验证不通过设置 flash 的错误,如果通过了就保存设置,然后设置 flash 成功设置的信息。
  3. 设置完成后跳转到 Get 请求。
  4. Get 请求获取到了 Flash 信息,然后执行相应的逻辑,如果出错显示出错的页面,如果成功显示成功的页面。

默认情况下 ReadFromRequest 函数已经实现了读取的数据赋值给 flash,所以在你的模板里面你可以这样读取数据:

{{.flash.error}}
{{.flash.warning}}
{{.flash.notice}}

flash 对象有三个级别的设置:

  • Notice 提示信息
  • Warning 警告信息
  • Error 错误信息

最新文章

  1. LintCode 111 Climbing Stairs
  2. 适配ipone5
  3. ACM/ICPC 之 SPFA-兑换货币(POJ1860)
  4. ModelProxy 前端接口配置建模框架
  5. bat 批处理脚本
  6. 【转】Qt Creator在Windows上的调试器安装与配置
  7. careercup-排序和查找 11.3
  8. 破解EXCEL2007的密码
  9. Oracle DB 自动管理共享内存
  10. uva10718 - Bit Mask(贪心)
  11. Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
  12. WinForm 水晶报表的简单使用
  13. vuejs自定义过滤器根据搜索框输入的值,筛选复杂的列表数据
  14. 银联支付java版
  15. session_unset,session_destroy
  16. minicom 抓取log
  17. bzoj 3224: Tyvj 1728 普通平衡树 && loj 104 普通平衡树 (splay树)
  18. [16]Windows内核情景分析 --- 服务管理
  19. Junit4简单使用
  20. day10-连接mysql虚拟机报错

热门文章

  1. 同学帮帮移动 H5 弹出层类组件:txbb-pop
  2. 64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多?(一)
  3. Git—怎样Windows操作系统中安装Git
  4. django form POST方法提交表达
  5. 使用python封装get+post请求
  6. iOS-如何读取Plist文件
  7. iOS-Pods里三方文件导入找不到头文件
  8. python技巧之下划线(二)
  9. Android实例-退出程序
  10. [Go语言]从Docker源码学习Go——结构和函数的定义