课程表

Revel课程

工具箱
速查手册

Revel Session / Flash

当前位置:免费教程 » 程序设计 » Revel

Revel 支持两种 基于 cookie 存储机制

  1. // 一个签名 cookie (不超过4kb).
  2. // 限制: Keys may not have a colon in them.
  3. type Session map[string]string
  4.  
  5. // 在每个请求中,Flash 获取并重写cookie。
  6. // 它允许数据每次跨越存储到一个页面。It allows data to be stored across one page at a time.
  7. // 它通常用来实现成功或错误消息。
  8. // 比如: Post/Redirect/Get : http://en.wikipedia.org/wiki/Post/Redirect/Get
  9. type Flash struct {
  10. Data, Out map[string]string
  11. }

Session

Revel的 “session” 是一个加密签名存储的字符串 map。

影响如下:

  • 大小不超过 4kb。
  • 所有数据被保存为一个序列化的字符串。
  • 用户可以查看、修改所有数据 (未加密)。

session cookie 的默认过期时间是浏览器关闭。 可以在app.config修改session.expires配置来指定一个有效期时间。格式是 time.ParseDuration.

Flash

Flash 支持单独使用字符串存储。这对于实现 Post/Redirect/Get 模式是很有用的, 或临时显示 “操作成功!” 或 “操作失败!” 消息。

下面是一个例子:

  1. // 一个设置页面
  2. func (c App) ShowSettings() revel.Result {
  3. return c.Render()
  4. }
  5.  
  6. // 处理页面提交数据
  7. func (c App) SaveSettings(setting string) revel.Result {
  8. // 验证用户输入
  9. c.Validation.Required(setting)
  10. if c.Validation.HasErrors() {
  11. // 设置被带回的flash cookie错误信息
  12. c.Flash.Error("Settings invalid!")
  13. // 在flash cookie中保存验证错误
  14. c.Validation.Keep()
  15. // 复制所有给定的参数(URL, Form, Multipart)到flash cookie
  16. c.FlashParams()
  17. return c.Redirect(App.ShowSettings)
  18. }
  19. saveSetting(setting)
  20. // 设置flash cookie成功消息
  21. c.Flash.Success("Settings saved!")
  22. return c.Redirect(App.ShowSettings)
  23. }

例子主要功能如下:

  1. 用户获取设置页面。
  2. 用户提交一个表单 (POST)。
  3. 应用程序处理用户请求,保存错误或成功的消息到flash中,然后重定向设置页面 (REDIRECT)。
  4. 用户获取设置页面, 显示flash中的消息。 (GET)

主要使用了两个函数:

  1. Flash.Success(message string)Flash.Out["success"] = message简写方式
  2. Flash.Error(message string)Flash.Out["error"] = message简写方式

在模板中使用key来获取Flash 消息。例如, 通过简写函数获取成功和错误消息:

  1. {{.flash.success}}
  2. {{.flash.error}}
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号