请问revel framework的表单验证有什么需要注意的?

情况是这样的..我在试写表单验证例子的时候..发现表单元素的值($field.Flash)和验证消息($field.Error).打印不出来 但.errors内有该验证消息. 请问这到底是什么问题

models/SysAction.go

enter type SysAction struct {
Id int 
Code string 
Cname string 
} 
func (m * SysAction) Validate( v *rev.Validation) { 
v.Required(m.Code).Message("xxxx") 
}

cotrollers/SysActions.go 

func (c SysActions) Add() rev.Result { 
return c.Render() 
} 
func (c SysActions) AddConfirm(o *models.SysAction) rev.Result { 
o.Validate(c.Validation) 
if !c.Validation.HasErrors() { 
return c.Render(a) 
} 
c.Validation.Keep() 
c.FlashParams() 
fmt.Println(a) 
return c.Redirect(SysActions.Add) 
}

views/Add.html

{{with $f := field "a.Code" .}}
<lable for="{{$f.Id}}" >操作码:</lable>
<span>{{$f.Error}}</span>
<br/>
<input type="text" id="{{$f.Id}}" name="{{$f.Name}}" title="操作码" value="{{$f.Flash}}" /><br/><br/>
{{end}}

共 3 个回复


jimmykuu

看文档在模板中应该使用:

{{.errors.xxx}}
{{.flash.xxx}}
# 0

jimmykuu

{{with $f := field "m.Code" .}}
# 1

youseelee

非常感谢@jimmykuu 终于发现是哪里的问题..如下

func (m * SysAction) Validate( v *rev.Validation) {

v.Required(m.Code).Message("xxxx")

}

这里的m要与action里接收的"model param"同名..如func (c SysActions) AddConfirm(m *models.SysAction)

# 2