您的位置:首页 > 编程语言 > Go语言

Revel 重定义错误提示信息

2013-02-27 00:00 260 查看
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()))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  golang revel