- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在使用这个语句时遇到问题
m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database) {
如果我在 prog 中使用 struct define 就可以正常工作
m.Post(Model, binding.Form(Wish1{}) , func(wish Wish1, r render.Render, db *mgo.Database) {
但我需要它是一个独立的包。我得到“Wish is not a type”希望是绑定(bind)函数的返回。这适用于主要类型结构。我将支柱作为接口(interface)传递{}
我正在使用带有 Martini.Classic() 的 GO 更改 Martini 或 Binding 包对我来说真的很复杂。任何建议。
这是全部代码
package chlistpkg
import (
"github.com/codegangsta/martini"
"github.com/codegangsta/martini-contrib/binding"
"github.com/codegangsta/martini-contrib/render"
"labix.org/v2/mgo"
"time"
"fmt"
"html/template"
"reflect"
"adminStruct"
)
只是为了显示我需要传递给例程 Doall 的结构
type Wish1 struct {
Name string `form:"name"`
Description string `form:"description"`
AnyDate time.Time `form:"anydate"`
Active bool `form:"active"`
Number int `form:"number"`
NumDec float32 `form:"numDec"`
}
DB 返回一个 martini.Handler
func DB() martini.Handler {
session, err := mgo.Dial("mongodb://localhost")
if err != nil {
panic(err)
}
return func(c martini.Context) {
s := session.Clone()
c.Map(s.DB("advent2"))
defer s.Close()
c.Next()
}
GetAll 返回数据库中的所有 Wishes
func GetAll(db *mgo.Database, entList interface{}) interface{} {
db.C("wishes").Find(nil).All(entList)
fmt.Println("GettAll entList =", entList)
return entList
}
func Doall(Model string, Wish interface{}, Wish2 interface{}, Wishlist interface{} ) {
m := martini.Classic()
fmt.Println ("martini.Classic =", m)
m.Use(martini.Static("images")) // serve from the "images" directory as well
m.Use(render.Renderer(render.Options{
Directory: "templates",
Layout: "layout",
}))
m.Use(DB())
m.Get(Model, func(r render.Render, db *mgo.Database) {
r.HTML(200, "lista4", GetAll(db, Wishlist))
})
绑定(bind)不采用指针。我必须在“Wish”上通过引用传递结构问题是“wish Wish”的返回我得到一个错误 Wish is not a type在编译时
m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database) {
fmt.Println("Input wish =", wish)
db.C("wishes").Insert(wish)
r.HTML(200, "lista4", GetAll(db, Wishlist))
})
m.Run()
提前致谢
路易斯
最佳答案
您收到错误的原因是您调用了您的类型 Wish1
(带有数字 1),但您指的是 Wish
类型(它没有存在!)在你的代码中。
将您的结构更改为:
// Note: "Wish", not "Wish1"
type Wish struct {
Name string `form:"name"`
Description string `form:"description"`
AnyDate time.Time `form:"anydate"`
Active bool `form:"active"`
Number int `form:"number"`
NumDec float32 `form:"numDec"`
}
如果你想把你的类型放到另一个包中(提示:不要过度使用子包),那么它需要成为一个 pkgname.Wish
因为名称是完全限定的。
已添加
再看一眼,你也把事情搞砸了:
func Doall(Model string, Wish interface{}, Wish2 interface{}, Wishlist interface{} ) {
m := martini.Classic()
fmt.Println ("martini.Classic =", m)
m.Use(martini.Static("images")) // serve from the "images" directory as well
您的参数列表需要为每个类型提供一个名称;您不能将 Wish 接口(interface){}
作为参数传递,因为 Wish
是一种类型,而不是变量名。
你应该:
func DoAll(model string, wish interface{}, wish2 interface{}, wishList interface{}) { ... }
或者,更好的是,停止像这样使用 interface{}
并编写:
func DoAll(model string, wishList []Wish, wishes... Wish) { ... }
但是,您的 DoAll
函数似乎没有在其他地方被引用,并且正在创建自己的 Martini 实例。如果您刚开始,我强烈建议考虑一下为什么事情会像这样“分开”。保持简单 - 例如
func main() {
m := martini.Classic()
m.Use(martini.Static("images"))
m.Use(DB())
m.Use(render.Renderer(render.Options{...}))
// No need for an anonymous function, which just adds clutter
m.Get("/wishes/all", GetAllWishes)
// Same goes for here
m.Post("/wishes/new", PostWish)
m.Run()
}
PS:我已经修复了您的代码的格式,因为它在括号前后有很多不必要的空格。确保使用 gofmt
,它包含在 Go 安装中,可以连接到大多数流行的编辑器。
关于data-binding - 将结构传递给 Post martini 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685338/
我正在尝试从我的测试文件中拆分我的应用程序文件。它看起来像这样: main.go views/ layouts/ layout.html spec/ main_test.go main
我尝试用马提尼渲染我的页面布局.html ... ... {{ yield }} ... index.html Hello 渲染选项: m.Use(r
我正在使用 martini、golang 和 postgresql 构建一个社交网络类型的服务器作为练习,以帮助培养我在这三方面的技能。我想不明白的几个关键问题是如何将用户表中的主键插入到用户信息表的
我正在尝试定义代码块,如果它们被定义,这些代码块将被注入(inject)到基本模板中。我不想将一个页面上需要的所有脚本都包含到不需要它的另一个页面上。 我正在使用: "github.com/go-ma
我需要设置位于“公共(public)”文件夹中的默认页面“index.html”。我如何在 Martini 框架中做到这一点? 我试过了,但是没用: func main() { m := ma
如何将 martini 日志路径设置为某个随机文件。它现在显示在控制台中。 m := martini.Classic() 感谢帮助 最佳答案 将新记录器附加到 Martini: f, err := o
我正在尝试学习来自 Rails 的马提尼酒。马提尼世界中的数据库迁移使用什么? 最佳答案 马提尼中没有这样的东西。它只是编写 Web 服务的 helper 。如果您想要数据库迁移或根本不需要数据库,请
我用 Martini 编写了我的第一个 Go 应用程序。我有带命名参数的路由: m := martini.Classic() staticOptions := martini.StaticOption
我目前正在使用 golang 和 Martini 等,并希望动态地提供一些操作/生成的图像。这是一个最小的例子: package main import ( "github.com/codeg
我构建了一个网络爬虫,提供一些有关其发现的 http 信息。爬虫作为 go routine 运行,martini 运行 web 服务器。过了一会儿,我开始得到 2014/08/01 10:23:51
我正在尝试在 Go 中将 Auth0 与 Martini 一起使用。我正在使用他们的 examples但无论我尝试什么,我似乎都无法让它工作。 这是我的代码: package main import
我正在玩 Martini,出于某种原因我无法让 contrib 绑定(bind)包工作。 我的结构没有绑定(bind)值。我已将代码缩减为最简单的形式,但它仍然无法正常工作。 谁能看出我做错了什么
当我试图从我的数据库中获取 JSON 数据时,我得到了这个: {“时间”:“14 年 12 月 11 日 13:42:21”,“:”:“Привет” {"time":"13:42:25 11.12.
我是 Go 的新手,想知道是否有关于如何测试 Go Martini 的处理程序代码的示例的约定/标准? 提前致谢! 最佳答案 martini-contrib 库有很多值得一看的现有代码:https:/
我正在尝试使用 vk auth与 martini .但是编译时出错: /goPath/vkAuthTry2.go:38: undefined: YourRedirectFunc 问题是如何定义Your
下面的代码在本地服务器上完美运行,但是当适应谷歌应用引擎时(func main 更改为 init 并且包名称从 main 设置为测试应用程序)oauth2callback 请求不再工作,下面的请求被重
我是 GO 和马提尼套餐的新手。我现在想做的是使用 AJAX 提交表单。问题是 go 返回整个 html 文件。我不知道是否有错误,因为没有错误返回。我需要测试我的表单是否成功提交数据,因为我将使用它
我在使用这个语句时遇到问题 m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database)
我想给自己发送电子邮件,但页面 http://localhost:3000/panic 出现错误包含错误 url - /panic 在我们的例子中。但是我不知道如何从 RecoverWrap 方法中的
这没有太多背景,因为它确实是一种应该起作用的情况,但它却不起作用。 我正在使用马提尼框架。在一个处理程序中,我正在使用这个: session.Set("deployed", "true") r.Red
我是一名优秀的程序员,十分优秀!