Revel 参数验证


本文整理自网络,侵删。

Revel 自带参数验证功能:

  • 提供验证上下文,用来收集和管理验证错误(通过key 和 message)。
  • 辅助函数用来检查数据,并把错误信息带到上下文中。
  • 一个模板函数,从验证上下文通过key获取错误信息。

示例应用程序提供了一些深入理解参数验证的例子。

内联错误消息

下面演示使用内联错误消息验证字段

func (c MyApp) SaveUser(username string) revel.Result {
    // Username (required) 至少 4 - 15 个字符.
    c.Validation.Required(username)
    c.Validation.MaxSize(username, 15)
    c.Validation.MinSize(username, 4)
    c.Validation.Match(username, regexp.MustCompile("^\\w*$"))

    if c.Validation.HasErrors() {
        // 在flash上下文中保存验证错误并重定向
        c.Validation.Keep()
        c.FlashParams()
        return c.Redirect(Hotels.Settings)
    }

    // All the data checked out!
    ...
}
  1. username字段验证条件 (Required必填, MinSize最小长度, MaxSize最大长度, Match匹配一个正则表达式).
  2. 每个验证条件返回一个 ValidationResult,如果验证没有通过,验证结果会被保存到验证上下文中。
  3. 作为构建应用程序的一部分,Revel记录被验证的变量的名称,并使用它作为在验证上下文的默认key(之后可以通过key获取验证错误消息)。
  4. Validation.HasErrors() 如果验证没有通过,返回 true
  5. Validation.Keep() 告诉 Revel 序列化 验证错误消息到 Flash cookie中.
  6. Revel 重定向到 Hotels.Settings 方法.

Hotels.Settings 方法渲染一个模板:

{{/* app/views/Hotels/Settings.html */}}
...
{{if .errors}}Please fix errors marked below!{{end}}
...
<p class="{{if .errors.username}}error{{end}}">
    Username:
    <input name="username" value="{{.flash.username}}"/>
    <span class="error">{{.errors.username.Message}}</span>
</p>

它做了三件事:

  1. 检查 errors map 中是否存在key为 username的错误字段.
  2. 带回 username的字段值
  3. 在input下面显示错误消息(如果没有指定验证字段出错后的错误消息,则会显示验证函数默认的错误消息)

注意:模板函数 field 使用了验证错误框架,使模板的编写变得更加方便。

置顶的错误消息

如果错误消息都显示在一个地方,模板就变得简单了 (比如,放到页面顶部的一个红色的盒子中.)

阅读剩余部分

相关阅读 >>

Revel 参数验证

Revel 命令行工具

Revel 模板

Revel 拦截器

Revel 模块概要

Revel 项目结构

Revel websockets

Revel 参数绑定

Revel 配置文件app.conf

Revel 控制器

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...