无法解析来自 beego 的已发布表单数据
Cannot parse posted form data from beego
刚开始体验beego。
我正在尝试从以下位置获取已发布的表单数据:
<form action="/hello" method="post">
{{.xsrfdata}}
Title:<input name="title" type="text" /><br>
Body:<input name="body" type="text" /><br>
<input type="submit" value="submit" />
</form>
控制器:
type HelloController struct {
beego.Controller
}
type Note struct {
Id int `form:"-"`
Title string `form:"title"`
Body string `form:"body"`
}
func (this *HelloController) Get() {
this.Data["xsrfdata"]= template.HTML(this.XSRFFormHTML())
this.TplName = "hello.tpl"
}
func (this *HelloController) Post() {
n := &Note{}
if err := this.ParseForm(&n); err != nil {
s := err.Error()
log.Printf("type: %T; value: %q\n", s, s)
}
log.Printf("Your note title is %s" , &n.Title)
log.Printf("Your note body is %s" , &n.Body)
this.Ctx.Redirect(302, "/")
}
但是我得到的不是输入到字段中的字符串值:
Your note title is %!s(*string=0xc82027a368)
Your note body is %!s(*string=0xc82027a378)
我按照 the docs 请求处理,但不知道为什么不能发布字符串。
根据文档,定义接收器结构的方式应该是使用结构类型,而不是指向该结构的指针:
func (this *MainController) Post() {
u := User{}
if err := this.ParseForm(&u); err != nil {
//handle error
}
}
然后,在你的控制器中,如果你......
func (this *HelloController) Post() {
n := Note{}
...
}
关于 go 中指针的更多信息:https://tour.golang.org/moretypes/1
刚开始体验beego。
我正在尝试从以下位置获取已发布的表单数据:
<form action="/hello" method="post">
{{.xsrfdata}}
Title:<input name="title" type="text" /><br>
Body:<input name="body" type="text" /><br>
<input type="submit" value="submit" />
</form>
控制器:
type HelloController struct {
beego.Controller
}
type Note struct {
Id int `form:"-"`
Title string `form:"title"`
Body string `form:"body"`
}
func (this *HelloController) Get() {
this.Data["xsrfdata"]= template.HTML(this.XSRFFormHTML())
this.TplName = "hello.tpl"
}
func (this *HelloController) Post() {
n := &Note{}
if err := this.ParseForm(&n); err != nil {
s := err.Error()
log.Printf("type: %T; value: %q\n", s, s)
}
log.Printf("Your note title is %s" , &n.Title)
log.Printf("Your note body is %s" , &n.Body)
this.Ctx.Redirect(302, "/")
}
但是我得到的不是输入到字段中的字符串值:
Your note title is %!s(*string=0xc82027a368)
Your note body is %!s(*string=0xc82027a378)
我按照 the docs 请求处理,但不知道为什么不能发布字符串。
根据文档,定义接收器结构的方式应该是使用结构类型,而不是指向该结构的指针:
func (this *MainController) Post() {
u := User{}
if err := this.ParseForm(&u); err != nil {
//handle error
}
}
然后,在你的控制器中,如果你......
func (this *HelloController) Post() {
n := Note{}
...
}
关于 go 中指针的更多信息:https://tour.golang.org/moretypes/1