注意: Revel 通过调用的控制器方法名来确定使用哪个模板,查找参数名。因此, c.Render() 只可称为由操作。
RenderJson / RenderXml
应用程序可以调用 RenderJson
或 RenderXml
并传送任意类型的变量 (通常是一个 struct). Revel 会使用 json.Marshal
orxml.Marshal
对变量进行序列化操作.
如果 app.conf
配置文件中 results.pretty=true
, 将使用 MarshalIndent
进行序列化, 生成漂亮的缩进,方便使用。
重定向
一个辅助函数是用于生成重定向。它有两种方式使用:
- 重定向到一个控制器方法(不带参数):
return c.Redirect(Hotels.Settings)
这种形式是非常有用的,因为它提供了一定程度的路由类型安全性和独立性(自动生成URL)。
- 重定向到一个格式化字符串:
return c.Redirect("/hotels/%d/settings", hotelId)
通常用来传送参数.
它返回 302 (临时重定向) 状态码.
添加你自己的 Result
下面是一个添加简单结果的例子。
创建此类型:
type Html string
func (r Html) Apply(req *Request, resp *Response) {
resp.WriteHeader(http.StatusOK, "text/html")
resp.Out.Write([]byte(r))
}
在一个控制器方法中使用它:
func (c *App) Action() revel.Result {
return Html("<html><body>Hello World</body></html>")
}
状态码
每一个Result 都会设置一个默认的状态码,你也可以重新设置默认的状态代码:
func (c *App) CreateEntity() revel.Result {
c.Response.Status = 201
return c.Render()
}
标签:Revel
相关阅读 >>
更多相关阅读请进入《Revel》频道 >>

Go语言101
一个与时俱进的Go编程知识库。