变量映射

获取Form变量

通过Action的如下方法可以获取变量:

  • GetSlice
  • GetString
  • GetInt
  • GetBool
  • GetFloat
  • GetFile
  • GetForm

自动映射

通常我们通过http.Request.Form来获得从用户中请求到服务器端的数据,这些数据一般都是采用name,value的形式提交的。xweb默认支持自动将这些变量映射到Action的成员中,并且这种映射支持子Struct。例如:

  1. type HomeAction struct {
  2. *Action
  3. Name string
  4. User User
  5. }

那么当页面为:

  1. <form>
  2. <input name="name"/>
  3. <input name="user.id"/>
  4. </form>

时,变量会自动映射到HomeAction的成员NameUser上。

如果希望关闭
那么可以在ActionsInit()方法中通过Action.Option.AutoMapForm = false来进行关闭。

手动映射

如果希望手动进行映射,那么,可以通过Action.MapForm方法来进行映射,例如:

  1. type User struct {
  2. Id int64
  3. Name string
  4. Age float64
  5. }
  6. func (c *MainAction) Init() {
  7. c.Option.AutoMapForm = false
  8. c.Option.CheckXrsf = false
  9. }
  10. func (c *MainAction) Parse() error {
  11. if c.Method() == "GET" {
  12. return c.Write(page)
  13. } else if c.Method() == "POST" {
  14. var user User
  15. err := c.MapForm(&user, "")
  16. if err != nil {
  17. return err
  18. }
  19. return c.Write("%v", user)
  20. }
  21. return nil
  22. }

如果在提交的表单中有一个key为name的键值对,则对应的value就会自动赋值到Name这个filed中,这种命名也可以通过.来进行传递。如:上述代码中的User结构体可以通过user.id的key来对期成员赋值。