Grails全局基于变量的重定向

时间:2017-01-18 00:08:33

标签: grails url-redirection

我有一个grails应用程序,我正在构建一个全局配置页面(应用程序名称,图像等)

如果布尔值为false,我想将任何url请求重定向到它。我会看到这样的事情:

AppConfiguration config = AppConfiguration.findAll().get(0);
if(config == null || !config.hasBeenConfigured)
{
    redirect([controller :"AppConfiguration", action:"index"])
}

关于如何在不拖曳100多个控制器的情况下执行此操作的任何想法,以添加此内容。

Grails版本3.0.8

谢谢

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

每个控制器都通过以下方式为资源等实现了主要布局:

<meta name="layout" content="main"/>

所以在这个main.gsp中我添加了以下几段代码:

<g:set var="config" bean="configurationService"/>
<script>
    var shouldRedirect = ${!config.hasBeenConfigured()};

    if(shouldRedirect && window.location.href.indexOf("AppConfiguration") == -1)
    {
        window.location.href = window.location.origin + "/AppConfiguration/index";
    }
</script>

创建了一个名为ConfigurationService的grails服务,如下所示:

class ConfigurationService {

    def hasBeenConfigured()
    {
        return AppConfiguration.instance.hasBeenConfigured;

    }

    def getApplicationName()
    {
        return AppConfiguration.instance.applicationName;
    }
}