The Revel manual说:
给定名为Hello的控制器,其操作名为World,Revel将查找名为views / Hello / World.html的模板文件。
有没有办法在Revel中使用相同的模板和不同的操作?就像名为World和World2的行为一样,使用views / Hello / World.html。
答案 0 :(得分:1)
你可以尝试类似的东西:
List<Demo>
答案 1 :(得分:0)
我检查了狂欢的源代码,我认为你不能这样做。
这是Controller的渲染功能,只看最后一行:
func (c *Controller) Render(extraRenderArgs ...interface{}) Result {
// Get the calling function name.
_, _, line, ok := runtime.Caller(1)
if !ok {
ERROR.Println("Failed to get Caller information")
}
// Get the extra RenderArgs passed in.
if renderArgNames, ok := c.MethodType.RenderArgNames[line]; ok {
if len(renderArgNames) == len(extraRenderArgs) {
for i, extraRenderArg := range extraRenderArgs {
c.RenderArgs[renderArgNames[i]] = extraRenderArg
}
} else {
ERROR.Println(len(renderArgNames), "RenderArg names found for",
len(extraRenderArgs), "extra RenderArgs")
}
} else {
ERROR.Println("No RenderArg names found for Render call on line", line,
"(Action", c.Action, ")")
}
//templatePath = c.Name + "/" + c.MethodType.Name + "." + c.Request.Format
return c.RenderTemplate(c.Name + "/" + c.MethodType.Name + "." + c.Request.Format)
}
和RenderTemplate的源代码:
func (c *Controller) RenderTemplate(templatePath string) Result {
// Get the Template.
template, err := MainTemplateLoader.Template(templatePath)
if err != nil {
return c.RenderError(err)
}
return &RenderTemplateResult{
Template: template,
RenderArgs: c.RenderArgs,
}
}
github链接是here。
也许你可以创建一个World.html的别名文件
答案 2 :(得分:0)
只需在动作中通过RenderTemplate()指定通用模板:
func (c *Con) ActionA() revel.Result {
return c.RenderTemplate("the view path");
}