我有一个简单的表单,我想在发布请求上绑定它。
这是表格:
<form method="post" action="/post">
<input type="text" name="name" placeholder="name"><br>
<input type="checkbox" name="agree"><br>
<button type="submit">submit</button>
</form>
我正在尝试将其绑定在这样的结构中:
type PostForm struct {
Name string
Agree bool
}
这是整个代码:
package main
import (
"github.com/labstack/echo/v4"
"html/template"
"io"
"log"
"net/http"
)
type Template struct {
templates *template.Template
}
func (t *Template) Render(w io.Writer, name string, data interface{}, _ echo.Context) error {
return t.templates.ExecuteTemplate(w, name, data)
}
type PostForm struct {
Name string
Agree bool
}
func main() {
e := echo.New()
e.Debug = true
e.Renderer = &Template{
templates: template.Must(template.ParseGlob("./templates/*.gohtml")),
}
e.GET("/", func(c echo.Context) error {
return c.Render(http.StatusOK, "index.gohtml", nil)
})
e.POST("/post", func(c echo.Context) error {
var form PostForm
err := c.Bind(&form)
if err != nil {
return c.String(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, form)
})
log.Fatalln(e.Start(":3000"))
}
当我使用未选中的同意字段发布请求时,它工作正常:
{
"Name": "sdfgsdfg",
"Agree": false
}
但是当我发送带有选中复选框的帖子时,出现错误:
code=400, message=strconv.ParseBool: parsing "on": invalid syntax, internal=strconv.ParseBool: parsing "on": invalid syntax
我做错了什么?
这是 github 上的所有代码的仓库:https ://github.com/max-block/q__echo_bind_checkbox
凤凰求蛊
相关分类