路由器找不到控制器Beego

时间:2016-07-27 00:34:28

标签: model-view-controller go beego

我有一个正在运行的beego应用程序,然后我的路由器停止找到控制器,我不知道为什么。无论我输入什么网址,路由器都不会直接向控制器抱怨nomatch

  

2016/07/26 17:24:50 [router.go:829] [D] | GET | / | 478.352μs| notmatch |

app.conf

appname = exampleapp 
httpport = 8080 
runmode = dev

router.go

package routers

import (
    "github.com/astaxie/beego"
    "example/controllers"

func init() {
     beego.Router("/", &controllers.MainController{})
}

default.go(控制器)

package controllers

import (
        "github.com/astaxie/beego"
)

type MainController struct {
        beego.Controller
}

 func (c *MainController) Get() {
        c.Data["Website"] = "http://localhost:8080"
        c.TplName = "index.tpl"
 }

main.go

package main

import (
        "fmt"
        "github.com/astaxie/beego"
)

func main() {
        fmt.Pritnln("Starting Beego App")
        beego.Run()
        fmt.Println("Finished Running Beego App")
}

我相信这符合http://beego.me/docs/mvc/controller/router.md的规格,所以我想了解它为什么找不到控制器。

1 个答案:

答案 0 :(得分:2)

您没有导入routers个包裹。如果您未在任何地方导入routers,则永远不会执行init功能。您可以在fmt.Println('I'm initialized')函数中添加一个简单的routers.init来测试它。

func init() {
     fmt.Println('I'm initialized')
     beego.Router("/", &controllers.MainController{})
}

好的,您必须使用_添加新导入,表示您不会使用,但init功能将被执行!然后你必须在主包中写这个:

import (
        "fmt"
        "github.com/astaxie/beego"

        _ "example/routers"
)

我希望它有用! : - )