Grails:如何更改默认视图位置?



我有控制器AdminTagController。默认情况下,视图位于/adminTag文件夹中。是否可以将此控制器的默认文件夹更改为/admin/view ?我可以为每个方法指定视图但这并不酷

谢谢

可以用控制器的afterInterceptor来改变它。检查示例:

def afterInterceptor = { model, modelAndView ->
    println "Current view is ${modelAndView.viewName}"
    if (model.someVar) {
        modelAndView.viewName = "/mycontroller/someotherview"
    }
    println "View is now ${modelAndView.viewName}"
}

应用于控制器的所有动作

在您的情况下,我会在控制器中做繁重的工作,因为只有一个类受到影响。

然而,这里有另一种方法,使用自定义GroovyPageResourceLoader。

当视图位于不遵循Grails约定的文件夹结构中时,通常使用这种方法。在我看来,就你的情况而言,那就太过分了。

然而,这里是总体思路:

1。创建一个类来扩展缺省的groovyPageResourceLoader

下面是一个非常原始的示例。

class AdminGroovyPageResourceLoader extends GroovyPageResourceLoader {
 @Override Resource getResource(java.lang.String location) {
        if (location.contains ("/admin")) {
            return new FileSystemResource("PATH_TO_GSP_LOCATION_WITHOUT_FILE_EXTENSION")
        }
        return super.getResource(location)
 }
}

2。覆盖默认的groovyPageResourceLoader bean

在<<p> em>资源。groovy或你的插件描述符,用你的自定义类覆盖groovyPageResourceLoader bean。

一个更短的路径,可能是一些元类kung fu,如果你不想覆盖默认的Spring Bean。

相关内容

  • 没有找到相关文章

最新更新