Revel 重定义错误提示信息

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)