doufei0933
doufei0933
2017-03-25 18:25
浏览 41
已采纳

如何在Go中执行带有500状态代码的模板?

I know that I can execute template with:

t.ParseFiles(name)
t.Execute(w, page)

And respond 500 with a message like this:

http.Error(w, err.Error(), http.StatusInternalServerError)

But how should I return 500 with a template that contains that message?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doubingling4706
    doubingling4706 2017-03-25 18:27
    已采纳

    Call ResponseWriter.WriteHeader before you execute your template:

    WriteHeader sends an HTTP response header with status code.
    If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK).
    Thus explicit calls to WriteHeader are mainly used to send error codes.

    t.ParseFiles(name)
    w.WriteHeader(http.StatusInternalServerError)
    t.Execute(w, page)
    

    If you look at the source code of http.Error, you can see it's doing the same thing.

    点赞 评论

相关推荐