Redirectメソッドでジャンプするビーゴ:
1
2
3
|
func
(this *AddController) Get() {
this.Redirect(
"/"
, 302)
}
|
要求を終了し、例外をスローする方法、ビーゴは、コントローラでこれを行うことができます。
1
2
3
4
5
6
7
8
9
10
11
12
|
func
(this *MainController) Get() {
this.Abort(
"401"
)
v := this.GetSession(
"asta"
)
if
v == nil {
this.SetSession(
"asta"
, int(1))
this.Data[
"Email"
] = 0
}
else
{
this.SetSession(
"asta"
, v.(int)+1)
this.Data[
"Email"
] = v.(int)
}
this.TplName =
"index.tpl"
}
|
このような this.Abort("401")
コード以下は実行されませんし、次のようにユーザーに表示されるデフォルトのページになります。
ビーゴのフレームワークのデフォルトの処理サポート401,403,404,500,503これらのタイプのエラー。ユーザーは、例えば404以下のページを再定義し、適切なエラー処理を定義することができます。
1
2
3
4
5
6
7
8
9
10
11
12
|
//定义处理404错误的函数<br>func page_not_found(rw http.ResponseWriter, r *http.Request){
t,_:= template.New(
"404.html"
).ParseFiles(beego.BConfig.WebConfig.ViewsPath+
"/404.html"
)
data :=make(
map
[string]
interface
{})
data[
"content"
] =
"page not found"
t.Execute(rw, data)
}
func
main() {
beego.ErrorHandler(
"404"
,page_not_found)
//如果是404错误返回什么
beego.Router(
"/"
, &controllers.MainController{})
//正常跳转
beego.Run()
}
|
私たちは、カスタムエラーページができ 404.html
404エラーを処理するために。
ビーゴより人間的なデザインもあり、エラー処理機能のユーザ定義の文字列型をサポートしていますが、
例えば、次のコードは、データベース・エラー・ページを処理するユーザ登録:
1
2
3
4
5
6
7
8
9
10
11
12
|
func
dbError(rw http.ResponseWriter, r *http.Request){
t,_:= template.New(
"dberror.html"
).ParseFiles(beego.BConfig.WebConfig.ViewsPath+
"/dberror.html"
)
data :=make(
map
[string]
interface
{})
data[
"content"
] =
"database is now down"
t.Execute(rw, data)
}
func
main() {
beego.ErrorHandler(
"dbError"
,dbError)
beego.Router(
"/"
, &controllers.MainController{})
beego.Run()
}
|
入学登録時にエラー処理コードたら、あなたは、データベース・エラー・コールで任意のロジックに遭遇する可能性が this.Abort("dbError")
例外ページの処理に。
コントローラの定義されたエラー
1.4.3バージョンから、あなたは組み込みのテンプレート処理システムだけでなく、コンテキストメソッドを利用することができますので、機能エラー処理を定義するためにコントローラエラーの方法をサポートしています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package
controllers
import
(
"github.com/astaxie/beego"
)
type
ErrorController
struct
{
beego.Controller
}
func
(c *ErrorController) Error404() {
c.Data[
"content"
] =
"page not found"
c.TplName =
"404.tpl"
}
func
(c *ErrorController) Error501() {
c.Data[
"content"
] =
"server error"
c.TplName =
"501.tpl"
}
func
(c *ErrorController) ErrorDb() {
c.Data[
"content"
] =
"database is now down"
c.TplName =
"dberror.tpl"
}
|
通过上面的例子我们可以看到,所有的函数都是有一定规律的,都是 Error
开头,后面的名字就是我们调用 Abort
的名字,
例如 Error404
函数其实调用对应的就是 Abort("404")。
我们就只要在 beego.Run
之前采用 beego.ErrorController
注册这个错误处理函数就可以了
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package
main
import
(
_
"btest/routers"
"btest/controllers"
"github.com/astaxie/beego"
)
func
main() {
beego.ErrorController(&controllers.ErrorController{})
beego.Run()
}
|