Revel中可以用Validate来检查参数是否正确 用户请求是否给出了某个参数 revel的示例代码如下:
func (c MyApp) SaveUser(username string) revel.Result {
// Username (required) must be between 4 and 15 letters (inclusive).
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() {
// Store the validation errors in the flash context and redirect.
c.Validation.Keep()
c.FlashParams()
return c.Redirect(Hotels.Settings)
}
// All the data checked out!
...
}
看上面代码中的c.Validation.Required(username) 如果username参数确实 那么c.Validation.HasError条件就为真 在HTML模板提示里会有写Required xxx
看起来一起都很完美啊 但是 要命的是当我想提示中文 并且覆盖掉Requried这个默认的提示消息前缀时 噩梦开始了 试了很多办法 都不能去掉这个Required前缀 最后没办法了 只能看Revel的源码 然后在github上找到了一些提示 可以自己定义 看这里
需要自己去实现一个validator的接口:
type Validator interface {
IsSatisfied(interface{}) bool
DefaultMessage() string
}
定义好接口:
func (t TokenValidator) DefaultMessage() string {
return string(t)
}
func (s TokenValidator) IsSatisfied(token interface{}) bool {
if token == nil {
return false
}
tk := token.(Oauth)
if tk.authToken == "" || tk.refreshToken == "" {
return false
}
return true
}
可以使用啦:
# type TokenValidator string
c.Validation.Check(token, TokenValidator(err.Error()))