从逻辑的角度来看,我试图在重定向之间保留部分表单数据以获得更好的用户体验,这样用户就不必再次填写整个表单,只需填写无效的部分。
从编程的角度来看,我试图在 gorilla session 的 flash 中保存 request.PostForm 数据结构。重定向后我唯一设法检索的是内存地址的字符串表示,如[0xc2001c8b10]。
这是我在验证错误后保存 flashes 数据的部分(在此之前执行了 request.ParseForm()):
session, _ := store.Get(request, "test")
session.AddFlash(err.Error(), "messages")
session.AddFlash(request.PostForm, "form_data")
session.Save(request, response)
http.Redirect(response, request, "/", http.StatusFound)
return
我也试过用 gob 注册结构没有效果:
func init() {
gob.Register(&url.Values{})
}
表单值是小写的,例如。“first_name”、“last_name”,如果这可能对这种行为有任何影响。
请记住,我成功地在重定向后设法检索了“消息”,唯一的问题是结构数据。
我做错了什么,或者是否有另一种方法可以在重定向后填写我不知道的部分表单?
白衣非少年
相关分类