标签: grails-plugin

从 Grails 中的 Quartz 作业渲染 GSP

当我尝试时,我有一个需要渲染 GSP 的石英作业:

def g = new org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib()
def text = g.render(template: "/templates/myTemplate",
          model: [language: language,
                  product: product])
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

org.quartz.JobExecutionException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request. …
Run Code Online (Sandbox Code Playgroud)

grails spring quartz-scheduler grails-plugin

4
推荐指数
1
解决办法
2171
查看次数

Grails导出插件不下载任何文件

我想使用grails导出插件将我的Domain类可导出到xls和csv文件中.

在我名为front.gsp的主要布局中,我做到了:

<!DOCTYPE html>
<html lang="en">
    <head>
        ...
        <g:layoutHead />
    </head>
    <body>
        <sec:ifLoggedIn>
        <r:require module="export"/>
        <export:formats formats="['csv', 'excel', 'ods', 'pdf', 'rtf', 'xml']" action="exportTest" />
        ...
        <g:layoutBody />
        <r:layoutResources/>
        <script type="text/javascript" src="${resource(dir: 'js', file: 'jquery.min.js')}"></script>
        <script type="text/javascript" src="${resource(dir: 'js', file: 'bootstrap.min.js')}"></script>
        <script type="text/javascript" src="${resource(dir: 'js', file: 'application.js')}"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

进入我的DomainClassController.groovy,我做到了:

def exportTest() {
        if(!params.max) params.max = 10

        if(params?.format && params.format != "html"){
            response.contentType = grailsApplication.config.grails.mime.types[params.format] response.setHeader("Content-disposition", "attachment; filename=contacts.${params.extension}")

            exportService.export(
                params.format,
                response.outputStream,
                ContactDTO.list(params),
                [:],
                [:])
            [contactDTOInstanceList: ContactDTO.list( params …
Run Code Online (Sandbox Code Playgroud)

grails export grails-plugin

4
推荐指数
1
解决办法
2248
查看次数

Grails:从请求中解析 JSON 的简单有效的方法

如果这是一个重复的问题,请原谅我。我已经完成了一些具有类似要求的问题/答案,但不知何故同时有点不知所措和困惑。我的要求是:

  • 我得到一个 JSON 字符串/对象作为请求参数。(例如:params.timesheetJSON)
  • 然后我必须解析/迭代它。

这是我的 grails 控制器将接收的 JSON:

{
    "loginName":"user1",
    "timesheetList":
    [
        {
            "periodBegin":"2014/10/12",
            "periodEnd":"2014/10/18",
            "timesheetRows":[
                {
                    "task":"Cleaning",
                    "description":"cleaning description",
                    "paycode":"payCode1"
                },
                {
                    "task":"painting",
                    "activityDescription":"painting description",
                    "paycode":"payCode2"
                }
            ]
        }
    ],
    "overallStatus":"SUCCESS"
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 如何从请求中检索整个 JSON 字符串?request.JSON 这里可以吗?如果是这样, request.JSON.timesheetJSON 会产生我想要的实际 JSON 作为 JSONObject 吗?

  2. 解析从请求中获取的 JSON 对象的最佳方法是什么?是 grails.converters.JSON 吗?或者还有其他简单的解析方法吗?就像某些 API 一样,它会通过自动处理解析将 JSON 作为对象集合返回。或者以编程方式解析 JSON 对象是唯一的方法吗?

就像我说的,如果问题听起来含糊不清,请原谅我。任何好的参考 JSON parsing with grails 在这里也可能会有帮助。

编辑:我现在获取 JSON 字符串的方式发生了变化。我获取 JSON 字符串作为请求参数。

String saveJSON // This holds the above JSON string.

def jsonObject = …
Run Code Online (Sandbox Code Playgroud)

grails json grails-plugin

4
推荐指数
1
解决办法
7161
查看次数

Grails Hibernate 过滤器 findById(id) 与 get(id)

我正在使用 hibernate Filter 根据登录来过滤我的域类。

它正在按预期工作

<DomainClass>.findById(<id>)
Run Code Online (Sandbox Code Playgroud)

但它不适合

<DomainClass>.get(<id>).
Run Code Online (Sandbox Code Playgroud)

为什么 get 的第二个版本不使用过滤器?

grails grails-plugin

4
推荐指数
1
解决办法
5532
查看次数

Grails Spring Security 最大并发会话数

我有带有 spring security 插件(2.0-RC5)的 grails 2.5.1 应用程序。我想阻止每个用户的当前会话数。我读过一些博客,但它不起作用。(http://www.block-consult.com/blog/2012/01/20/restricting-concurrent-user-sessions-in-grails-2-using-spring -security-core-plugin/ ) 我的 resources.groovy

beans = {
  sessionRegistry(SessionRegistryImpl)

    concurrencyFilter(ConcurrentSessionFilter,sessionRegistry,'/main/index'){
        logoutHandlers = [ref("rememberMeServices"), ref("securityContextLogoutHandler")]
    }
    concurrentSessionControlStrategy(ConcurrentSessionControlAuthenticationStrategy, sessionRegistry) {
        exceptionIfMaximumExceeded = true
        maximumSessions = 1

    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 boostrap.groovy 中

 def init = { servletContext ->
    SpringSecurityUtils.clientRegisterFilter('concurrencyFilter', SecurityFilterPosition.CONCURRENT_SESSION_FILTER)
  }
Run Code Online (Sandbox Code Playgroud)

和我的 config.groovy 我添加了这个:

grails.plugin.springsecurity.useHttpSessionEventPublisher = true
Run Code Online (Sandbox Code Playgroud)

谢谢..

grails spring-security grails-plugin

4
推荐指数
1
解决办法
2792
查看次数

Grails - grails.config.locations 不适用于类路径和 .properties 文件

我正在使用 Grails 2.5.3 版本做一个应用程序。我想外包数据库代码和Log4j的部分。

Log4j 的代码位于外部 .groovy 文件中。该文件不会被用户修改,因此不必是 /classes 目录中的属性文件。对于数据库代码来说,最好的方法是在外部属性文件中包含多个功能,因为将继续作为 /classes 目录中的属性文件。此外,DataSource.groovy 与其余配置一起存在。

然后,我只实现了使用 Log4j conf:

grails.config.locations = ["file:./grails-app/conf/LogConfig.groovy"]
Run Code Online (Sandbox Code Playgroud)

尽管我将文件放在 /grails-app/conf 目录中,但使用类路径不起作用。这不起作用:

grails.config.locations = ["classpath:LogConfig.groovy"]
Run Code Online (Sandbox Code Playgroud)

另外,我添加了两种情况(运行应用程序和战争模式)。但是,当我运行 grails prod war 并部署 Tomcat 时,Logconfig.groovy 无法识别。

grails.config.locations = ["file:./grails-app/conf/LogConfig.groovy",
"classpath:LogConfig.groovy"]
Run Code Online (Sandbox Code Playgroud)

对于数据库代码,我没有实现使用 .properties 文件。我把这个文件放在 grails-app/conf 中,它的内容是:

# DB properties
dataSource.username = xxx
dataSource.password = xxx
dataSouce.driverClassName = xxx
environments.development.dataSource.url = jdbc:mysql://localhost/xxx
environments.test.dataSource.url = jdbc:mysql://localhost/xxx
environments.production.dataSource.url = jdbc:mysql://localhost/xxx
Run Code Online (Sandbox Code Playgroud)

我读过很多教程和博客,但我不知道如何才能做到这一点。

谢谢您的帮助。

grails log4j datasource grails-plugin grails-3.0

4
推荐指数
1
解决办法
4254
查看次数

Grails - 卸载Spring Security Core

完全卸载spring-security-core插件的正确方法是什么?我正在开发一个不再需要登录的Grails应用程序,我想将其删除.

即使我通过以下方式卸载它:

grails uninstall-plugin spring-security-core

已安装插件[spring-security-core-1.1.3],但在应用程序的元数据中找不到,是否要卸载?[y,n]我的选择似乎没有任何影响.

我在启动应用程序时不断收到消息"配置Spring Security ...".

grails plugins spring-security grails-plugin

3
推荐指数
1
解决办法
2344
查看次数

如何解决grails插件依赖项

我的grails应用程序应该使用两个插件:shiroquartz2.

我将两个插件添加到BuildConfig.groovy:

  • 编译":shiro:1.1.4"
  • 编译":quartz2:2.1.6.2"

(在那个ide之后下载了它们)

依赖关系中的问题:shiro取决于shiro-quartz:1.2.0和来自org.opensymphony.quartz的shiro-quartz 1.6.1

我想知道为什么但是quartz2正在寻找方法实现到quartz-1.6.1.jar.Quartz2无法找到实现,这就是无法构建项目的原因.我认为quartz2应该在"普通"石英lib中搜索方法实现,比如quartz:1.0-RC7,但他没有.

那么,我怎样才能解决shiro和quartz2插件的冲突?

我听说依赖排除,但我不确定这个sugesstion.

PS与石英(不是quartz2)发生同样的问题

grails quartz-scheduler dependency-management grails-plugin shiro

3
推荐指数
1
解决办法
2943
查看次数

BuildConfig.groovy Grails 2.2.3中的自定义插件传递依赖性解析

tl;博士版

我自定义grails插件的依赖关系没有被我安装插件的项目继承和解决.

  • 将最新版本的发布插件安装到您的插件中(修复了jar依赖项的问题)
  • 清除BuildConfig.groovy文件中可能存在的对插件的任何引用(修复了插件依赖性的问题)
  • grails maven-install 使插件在mavenLocal()源中可用

长版

所以,我一直在尝试创建一个自定义grails插件供我大学内部使用.

我真的很喜欢它,如果将插件放入BuildConfig.groovy文件的插件关闭会自动安装不仅仅是插件,而是在BuildConfig.groovy文件中为插件定义的所有依赖项(或者,在打包后,它的依赖项.groovy文件).

查看说明,我已经在存储库闭包中为我的项目设置了BuildConfig.groovy文件:

flatDir name:'my-plugin', dirs:'/Users/me/workspace-ggts/myplugin'
Run Code Online (Sandbox Code Playgroud)

然后将其添加到插件闭包中:

compile(":grails-my-plugin:0.1")
Run Code Online (Sandbox Code Playgroud)

这确实正确安装了插件,但它没有解决任何插件的依赖项或所需的插件.这是插件的BuildConfig.groovy文件中的三个主要闭包:

repositories {
    grailsCentral()
    mavenCentral()
    mavenRepo "http://www.mygrid.org.uk/maven/repository"
    def jbossResolver = new org.apache.ivy.plugins.resolver.URLResolver()
    jbossResolver.addArtifactPattern("https://repository.jboss.org/nexus/content/groups/public-jboss/com/sun/media/[module]/[revision]/[artifact]-[revision].[ext]")
    jbossResolver.addArtifactPattern("https://repository.jboss.org/nexus/content/groups/public-jboss/javax/media/[module]/[revision]/[artifact]-[revision].[ext]")
    resolver jbossResolver
}
dependencies {

    compile (
        [group:'javax.media', name:'jai-core', version:'1.1.3'],
        [group:'com.sun.media', name:'jai-codec', version:'1.1.3']
        )
    compile "net.java.dev.jai-imageio:jai-imageio-core-standalone:1.2-pre-dr-b04-2013-04-23" //this jar comes from the mygrid mavenRepo
}

plugins {
    build(":tomcat:$grailsVersion",
          ":release:1.0.0") {
        export = false
    }
    compile ":spring-security-core:1.2.7.3"
    compile ":wslite:0.7.2.0"
}
Run Code Online (Sandbox Code Playgroud)

如果我使用插件运行grails run-app,它会解决所有这些依赖关系.只有当插件安装到项目时,自动依赖项解析才会失败.

我已经尝试使插件成为maven工件,并将其复制到我的本地存储库.在这些情况下,我flatDirrepositories …

grails dependencies ivy grails-plugin grails-2.2

3
推荐指数
1
解决办法
3840
查看次数

如何在Grails插件中实现Groovy全局AST转换?

我想在编译时修改一些Grails域类.我最初认为这是Groovy的全局ASTTransformation的工作,因为我不想注释我的域类(本地变换器需要).最好的方法是什么?

我也尝试通过在同一个包中创建我自己的类来模仿DefaultGrailsDomainClassInjector.java,实现相同的接口,但我可能只是不知道如何将它打包在正确的位置,因为我从未看到我的方法被调用.

另一方面,我能够手动创建一个包含已编译的AST转换类的JAR,以及纯Groovy全局转换所需的META-INF/services工件.我把JAR扔进了我的项目的"lib"目录,并成功调用了visit().显然这是一个草率的工作,因为我希望在Grails插件中获得我的AST转换的源代码,如果我不需要,则不需要单独的JAR工件,加上我无法通过拥有这种方法来实现我的Grails插件的"lib"中的JAR,但不得不将它放入Grails应用程序的"lib"中.

这篇文章也有所帮助:Grails 2.1.1 - 如何使用AstTransformer开发插件?

grails groovy grails-plugin

3
推荐指数
1
解决办法
1729
查看次数