直接解析到 struct
2018-01-16 23:37
162 查看
如果要把表单里的内容赋值到一个 struct 里,除了用上面的方法一个一个获取再赋值外,beego 提供了通过另外一个更便捷的方式,就是通过 struct 的字段名或 tag 与表单字段对应直接解析到 struct。
定义struct:
表单:
Controller 里解析:
注意:
表单里的name值必须和struct -> form值大小写保持一致(LZ在这里遇到了坑)
定义 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 标签的值设置为 -
定义struct:
type user struct { Id int `form:"-"` Name interface{} `form:"username"` Age int `form:"age"` Email string }
表单:
<form id="user"> 名字:<input name="username" type="text" /> 年龄:<input name="age" type="text" /> 邮箱:<input name="Email" type="text" /> <input type="submit" value="提交" /> </form>
Controller 里解析:
func (this *MainController) Post() { u := user{} if err := this.ParseForm(&u); err != nil { //handle error } }
注意:
表单里的name值必须和struct -> form值大小写保持一致(LZ在这里遇到了坑)
定义 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 标签的值设置为 -
相关文章推荐
- 简单解析struct inode 和 struct file
- QT中添加Q_OBJECT时编译提示obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const错误解决方法
- QT error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObjec
- java通过poi解析Excel文件,直接读取客户端文件
- Oracle中Clob类型处理解析(NHibernate long值绑定long列,或者是直接oraclecommand的插入的时候报错都能用,ORA-01461:仅可以插入LONG列的LONG值赋值
- 防止恶意解析 - 禁止通过ip直接访问到网站
- 【转】ubuntu下配置apache的mod_python解决firefox下不能解析文档而变成直接下载
- error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall
- python struct 解析服务器数据
- mp4文件格式解析——直接上代码,详细
- define 解析依赖,判断状态,初始化/触发加载 --------require 同步加载(直接返回)/异步加载(创建匿名模块,判断状态,初始化/触发加载)
- Python 直接赋值、浅拷贝和深度拷贝解析
- error LNK2001: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > 的解决办法
- 【直接拿来用のandroid公共代码模块解析与分享】の Notification和NotificationManager
- 【Java生成二维码】java生成和解析二维码,只用一个jar包,QRCODE,可复制粘贴直接用
- (1) linux 3.x - struct - TCP连接建立系列 — TCP选项解析
- struct与union的对齐方式解析
- error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject
- DNS解析错误的问题,域名解析错误导致输入域名不访问而直接输入网站IP却可以正常访问
- php读取二进制流(C语言结构体struct数据文件)的深入解析