Go Revel - Validation(验证)
Revel提供了内建函数用于验证参数。它提供了:
一个`Validation`上下文集合来管理验证错误信息(键与消息内容)
辅助函数用于检查数据并将错误信息放入上下文
一个模板函数用于从`Validation`上下文以键的方式获取错误信息
##内嵌错误信息
这个例子演示了字段验证与内嵌错误信息:
func (c MyApp) SaveUser(username string) revel.Result {
// Username 参数必须是4~15个长度,名且匹配正则 ^\\w*$
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`必须符合四种情况(必填、最长15个、最少4个,匹配正则)
2、每一次验证返回一个`ValidationResult`对象,失败的`ValidationResult`存储在`Validation`上下文
3、在构建项目时,revel会记录每个需要验证参数的变量名,并且将它作为默认的`validation`上下文中的key
4、`Validation.HasErrors()` 如果`validation`上下文包含错误信息,则返回`true`
5、`Validation.Keep()`使`ValidationErrors`错误信息写入flash cookies
6、重定向至`Hotels.Settings`
`Hotels.Settings`会渲染如下模板:
{{/* app/views/Hotels/Settings.html */}}
...
{{if .errors}}Please fix errors marked below!{{end}}
...
Username:
{{.errors.username.Message}}
它做了3个事:
1、检查错误信息map中`username`键是否存在错误
2、使用`username`中的值预填充input标签
3、在input标签下面显示错误信息。
##顶部的错误信息
错误信息可以被显示在一个固定的地方,这样可以简化错误显示机制。例如,在页面上方有个红色边框的区域显示这些信息。
这与上面的例子有两点不同:
1、我们使用`Message`,而不是`ValidationError`的`Key`
2、我们在表单的上部显示所有错误信息
代码:
func (c MyApp) SaveUser(username string) revel.Result {
// Username 参数必须是4~15个长度,名且匹配正则 ^\\w*$
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!
...
}
模板:
{{/* app/views/Hotels/Settings.html */}}
...
{{if .errors}}
- {{range .errors}}
- {{.Message}}
{{end}}
{{end}}
...
Go Revel - Validation(验证)的更多相关文章
- 关于脱离laravel框架使用Illuminate/Validation验证器
1.关于Illuminate/Validation验证器 Validation 类用于验证数据以及获取错误消息. github地址:github.com/illuminate/validation 文 ...
- 在系统中使用Bean Validation验证参数
转自:http://www.importnew.com/18561.html 为什么要使用Bean Validation? 当我们实现某个接口时,都需要对入参数进行校验.例如下面的代码 1 2 3 ...
- @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...
- validation验证器指定action中某些方法不需要验证
今天写代码时,遇到个问题,在一个输入数据的页面有一个按钮,单击会发出请求从数据库中取数据,在这里出现问题,单击该按钮,配置的validation起作用,该请求没有到达后台的action 点击按钮选择作 ...
- Jquery Validation 验证控件的使用说明
转载自:http://blog.csdn.net/huang100qi/article/details/52453970,做了一些简化及修改 下载地址:https://jqueryvalidation ...
- s:select下拉框validation验证
S:select下拉框验证: <td colspan="5"> <s:select name="vo.typeVO.corp" list=&q ...
- jquery validation验证身份证号、护照、电话号码、email
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Laravel 中 validation 验证 返回中文提示 全局设置
<?php return [ /* |-------------------------------------------------------------------------- | V ...
- flask修改flask_wtf使其支持json数据的validation验证
flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...
随机推荐
- asp.net C#取Excel 合并单元格内容
asp教程.net c#取excel 合并单元格内容读取excel数据,填充dataset// 连接字符串 string xlspath = server.mappath("~/www.11 ...
- SQL 教程数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等,您将学到如何使用 SQL 访问和处理数据系统中的数据
SQL 基础教程 SQL 教程 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL in ...
- C# .net WPF无边框移动窗体
转自 http://download.csdn.net/detail/xiang348352/3095084 WPF无边框移动窗体,先在<Window>里添加 MouseLeftButto ...
- scala中json与对象的转换
遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 case class Book (author: Strin ...
- 【Android开发】创建你的第一个Android项目
原文:http://android.eoe.cn/topic/summary 本文中你将了解到: 1. 使用Eclipse创建项目 2. 使用命令行创建项目 你还应该阅读: 1. 安装SDK(官网页面 ...
- js函数调用二种常用方法的例子
js中函数调用的两种常用方法. 一个js函数 function test(aa){ window.alert("你输入的是"+aa); } 方法一:直接调用 test(" ...
- 腾讯云服务器 - 定时备份MariaDB/MySQL
数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过服务器每日自定运行来做的,设置一个定时时间即可 首先我们看一下mysqldump这个文件的位置: 可以看到目录在 /usr/ ...
- Android Lock Pattern 图案解锁
参考链接:http://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html http://blog.csdn.net/way_ping ...
- 字符测试与映射函数 ctype.h
对于C Standard Library 可以参考:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ 或者 http://www.cplusplus.c ...
- python(39):argparse的用法,从外部传入指定参数
直接上例子: # /usr/bin/env python # coding=utf8 import os import argparse import logging import sys FORMA ...