文档章节

Beego 的Contrller ParseForm的使用方法

SunnyGo
 SunnyGo
发布于 2016/05/12 16:03
字数 497
阅读 748
收藏 1

 

如果要把表单里的内容赋值到一个 struct 里,除了用一个一个获取再赋值外,beego 提供了通过另外一个更便捷的方式,就是通过 struct 的字段名或 tag 与表单字段对应直接解析到 struct。

 

首先看模板是怎么提交的

 

<form id="user" action="/login" method="post">
    <label name="lab_username">username:</label>
    <input type="text" name="username" value="" />
    <label name="lab_pwd">password:</label><input type="password" name="pwd" value="" />
    <input type="submit" name="login" value="Login" />
</form>

 

接下来写struct

 

type Cmsuser struct {
    Id         int    `form:"-"`
    Username string `form:"username"`
    Pwd      string `form:"pwd"`
}

这里面有几点必须注意

1)变量名称的首字母必须大写,go lang的规定

2)其它

  • 定义 struct 时,字段名后如果有 form 这个 tag,则会以把 form 表单里的 name 和 tag 的名称一样的字段赋值给这个字段,否则就会把 form 表单里与字段名一样的表单内容赋值给这个字段。如上面例子中,会把表单中的 username 和 age 分别赋值给 user 里的 Name 和 Age 字段,而 Email 里的内容则会赋给 Email 这个字段。
  • 调用 Controller ParseForm 这个方法的时候,传入的参数必须为一个 struct 的指针,否则对 struct 的赋值不会成功并返回xx must be a struct pointer 的错误。
  • 如果要忽略一个字段,有两种办法,一是:字段名小写开头,二是:form 标签的值设置为 -

 

这个时候写好了Router就可以提交了。

func (this *LoginController) Post() {

u := Cmsuser{}
      if err := this.ParseForm(&u); err != nil {

        beego.Info(err)

    } else { //这个地方容易搞错,记住是没有错误的时候你就获得数据了。

       this.Ctx.WriteString(u.Username + u.Pwd)
    }

}

 

© 著作权归作者所有

共有 人打赏支持
SunnyGo
粉丝 7
博文 28
码字总数 8249
作品 0
东城
技术主管
beego.Controller.ParseForm()方法没法转换成struct的对象

beego.Controller.ParseForm()方法没法转换成struct的对象,网上找了各种资料 用法如下 func (this *OrgnizationController) DoAddOrg() { org := models.Orgnization{} if err := this.Par......

一小撮世界
2015/03/13
625
3
beego 1.4.3 版本发布,Go 应用框架

这个版本憋了好久才发布,实在对不起各位亲,我持续改进的心都在,但是因为换工作事情比较多,实在抱歉。 新功能: ORM数据库创建和修改的时候支持default设置 改进日志文件行数统计 sesesion...

astaxie
2015/03/01
4.3K
32
直接解析到 struct

如果要把表单里的内容赋值到一个 struct 里,除了用上面的方法一个一个获取再赋值外,beego 提供了通过另外一个更便捷的方式,就是通过 struct 的字段名或 tag 与表单字段对应直接解析到 st...

浩爷
01/16
0
0
beego 1.6.0 版本发布,Go 应用框架

距离上一次发布1.5版本已经半年了,这半年里面我们改进了很多,其实中间又想要发布一个小版本的,但是后来还是想想就改的彻底一点,所以这次改动相当多,中间又因为一些兼容性的问题所以特地...

astaxie
2016/01/18
8.9K
55
beego 1.1.1 版本发布,Go 应用框架

这个版本主要是一些bug的修复和增加新功能 session模块file引擎无法删除文件,不断刷新引起的文件读取失败问题 文件缓存无法读取struct,改进gob自动化注册 session模块增加新引擎couchbase 4...

astaxie
2014/03/12
908
5

没有更多内容

加载失败,请刷新页面

加载更多

arcgis jsapi接口入门系列:总览

开发环境: arcgis jsapi版本4.9 由于我们这套代码是基于vue,webpack开发的,会有少数vue代码,但总体不影响 里面还有些我们公司的js库和html css,给出的代码不能百分百直接运行,主要还是...

canneljls
4分钟前
0
0
月薪80k阿里架构师漫谈他是如何从一名小码农走到架构师的

01 刚当程序员时,我是属于那种勤勤恳恳类型的员工,工作态度用认真来形容不为过,每天我几乎是团队里最早到公司,又最晚下班的一个。而组员张工一般情况下都是准时上下班的,即使项目进度比...

Java填坑之路
6分钟前
0
0
oracle的resetlogs机制浅析

oracle的resetlogs机制浅析 alter database open resetlogs 这个命令我想大家都很熟悉了,那有没有想过这个resetlogs选项为什么要用?什么时候用? 它的原理机制是什么?他都起哪些作用? 我...

突突突酱
8分钟前
0
0
JAVA 获取两个日期间的所有日期

public static List<String> getDates(String startDate, String endDate){    Date d1 = new SimpleDateFormat("yyyyMMdd").parse(startDate);//定义起始日期    Date d2 = new Simple......

尘叙缘
15分钟前
0
0
Innodb中的事务隔离级别和锁的关系

#一次封锁or两段锁? 因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。...

Skqing
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部