小编rcg*_*e23的帖子

Groovy GStringImpl和String行为

我最近一直在阅读在使用Groovy中的集合时GStringImpls vs Strings 的行为.

我理解这个评价错误的原因......

"${'test'}".equals("test") == false

是由于.equals()合同的对称性要求,但我想知道是否有一个原因GStringImpl不能String立即评估.所以,当我做这样的事情......

"${'someString'}"

我没有得到GStringImpl,我只是得到一个简单的Java String,我可以立即将其用作地图中的关键字,例如.

我知道有一些解决方法,比如

String s = "${'someString'}"

然而,像这样的东西是有点不方便,之间的混淆GStringImplString似乎是Groovy的新手大的"疑难杂症".

string groovy equality

15
推荐指数
1
解决办法
1万
查看次数

重用部分Grails标准关闭

我的Grails应用程序中有一个相当大的条件闭包,我想在我的应用程序中的几个地方重用它的一部分.我不想复制我需要重用的部分,而是将其定义为一个单独的闭包,并在需要的地方引用它,但我在语法上有点挣扎.

这是一个简化/缩减版本,但基本上我的标准看起来像这样:

def criteriaClosure = {
    and {
        // filtering criteria that I'd like to reuse in lots of places
        or {
            names.each { name ->
                sqlRestriction(getFilteringSql(name), [someId])
            }
        }

        if (isOrganisationChild(childDefaultGrailsDomainClass)) {
            sqlRestriction(getFilteringSql(domain), [someArg])
        }

        // filtering criteria that's specific to this particular method
        sqlRestriction(getSomeOtherSql(), [someOtherArg])
    }
}

def criteria = domain.createCriteria()
def paginatedList = criteria.list([offset: offset, max: max], criteriaClosure)
Run Code Online (Sandbox Code Playgroud)

我已经尝试定义我想要作为变量重用的闭包部分,并在我的标准闭包中引用它,但是它定义的限制似乎没有被应用.

def reusableClosure = {
    and {
        or {
            names.each { name ->
                sqlRestriction(getFilteringSql(name), [someId])
            }
        }

        if (isOrganisationChild(childDefaultGrailsDomainClass)) …
Run Code Online (Sandbox Code Playgroud)

grails groovy closures

12
推荐指数
1
解决办法
2088
查看次数

HQL意外的AST节点:{vector}

我正在尝试编写一个HQL查询来获取属于特定组织的用户列表,或者来自特许经营者列表中的任何特许经营者,但是hibernate无法解析它.我无法弄清楚为什么.这是HQL:

from User u where 
(u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees) 
and u.parentOrganisation.deleted = false 
and u.active = true
Run Code Online (Sandbox Code Playgroud)

这是hibernate吐出的错误:

unexpected AST node: {vector} [from com.myapp.User u where (u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees0_, :franchisees
1_, :franchisees2_) and u.parentOrganisation.deleted = false and u.active = true]. Stacktrace follows:
Message: unexpected AST node: {vector} [from com.myapp.User u where (u.parentOrganisation = :topLevelOrganisation or u.parentOrganisation in :franchisees0_, :fr
anchisees1_, :franchisees2_) and u.parentOrganisation.deleted = false and u.active = true]
Run Code Online (Sandbox Code Playgroud)

如果我取出这个or u.parentOrganisation in …

java grails hibernate hql

9
推荐指数
2
解决办法
2万
查看次数

NullPointerException仅在我为GoogleCredential对象设置了ServiceAccountUser()之后(Grails/Java)

我收到一个NullPointerException非常小的细节,当我试图setServiceAccountUser(ACCOUNT_TO_IMPERSONATE)在我GoogleCredential,构建一个谷歌任务服务对象,然后试图发送一个请求,从任务列表ACCOUNT_TO_IMPERSONATE.

def credential = new GoogleCredential.Builder()
    .setTransport(HTTP_TRANSPORT)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(SERVICE_ACCOUNT_ID)
    .setServiceAccountPrivateKeyFromP12File(P12_FILE)
    .setServiceAccountScopes(GOOGLE_TASK_SCOPES)
    .setServiceAccountUser(ACCOUNT_TO_IMPERSONATE)
    .build()

    credential.refreshToken()
    log.debug("Google Credential Impersonating: ${credential.getServiceAccountUser()}")

    def service = new com.google.api.services.tasks.Tasks.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).build()

    return service
Run Code Online (Sandbox Code Playgroud)

请注意,credential.getServiceAccountUser()预期的日志ACCOUNT_TO_IMPERSONATE.

https://github.com/googleads/googleads-java-lib/issues/19中报告了类似的问题

StackTrace :
Caused by: java.lang.NullPointerException at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:191)
at com.google.api.client.util.Preconditions.checkNotNull(Preconditions.java:127)
at com.google.api.client.json.jackson2.JacksonFactory.createJsonParser(JacksonFactory.java:96)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:85)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81)
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:88)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
at com.google.api.client.auth.oauth2.Credential.executeRefreshToken(Credential.java:570)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:247)
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489)
at com.google.api.ads.common.lib.auth.OAuth2Helper.callRefreshToken(OAuth2Helper.java:70)
at com.google.api.ads.common.lib.auth.OfflineCredentials.generateCredential(OfflineCredentials.java:144)
...
Run Code Online (Sandbox Code Playgroud)

错误中缺少详细信息据说是旧版Google任务中的一个问题,但我已升级到最新版本并且没有任何区别.

compile "com.google.api-client:google-api-client:1.19.0"
compile 'com.google.apis:google-api-services-tasks:v1-rev41-1.19.0' …
Run Code Online (Sandbox Code Playgroud)

java grails google-api oauth-2.0 google-tasks-api

7
推荐指数
1
解决办法
5253
查看次数

大文件上载期间的Grails连接超时

SocketTimeoutException如果用户尝试从我的Grails Web应用程序中的上传表单上传大文件,我想在大约1分钟后阻止这种情况发生.我知道这是一个Tomcat的东西,而不是Grails的东西,但我正在努力修改server.xml使用eventConfigureTomcat事件块_Events.groovy.

根据tomcat文档disableUploadTimeout,我应该true在连接器上设置一个属性,但是当我在eventConfigureTomcat块中尝试这个时,我的应用程序启动时出现以下错误:

| Running Grails application
| Error Server failed to start: No such property: disableUploadTimeout for class: org.apache.catalina.connector.Connector (Use --stacktrace to see the full trace)
Run Code Online (Sandbox Code Playgroud)

我的内容_Events.groovy看起来像这样:

eventConfigureTomcat = { tomcat ->
    tomcat.connector.disableUploadTimeout = "true"
}
Run Code Online (Sandbox Code Playgroud)

并且该错误确实有意义 - 根据javadoc,disableUploadTimeout该连接器实现上没有属性.

我究竟做错了什么?我应该如何设置此属性,还是有其他方法可以阻止长时间运行的文件上传超时?

grails tomcat timeout file-upload

5
推荐指数
1
解决办法
834
查看次数

使用 JD 和 Eclipse 在反编译的类中搜索文本

我目前正在尝试调试我们的 Web 应用程序的问题 - 我可以在日志中看到一条错误消息,但我无法确定它的来源,尽管我怀疑它来自闭源电子商务提供的类之一我们使用的平台。

我有 JD-Eclipse 反编译器 - 有什么方法可以通过 Eclipse 搜索包含在一个已编译类中的一段文本吗?

java eclipse decompiler

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

$("a").href 始终返回绝对 URL,即使 href 属性是相对的

我正在尝试重写我页面上的一些链接,以便将它们设为绝对链接,但前提是它们还不是绝对链接。

我正在使用 jQuery,并执行以下操作:

$("a").each(function() {
    if (!this.href.startsWith("http")) {
        this.href = "http://blah.com" + this.href
    }
});
Run Code Online (Sandbox Code Playgroud)

出乎意料的是(对我而言)即使页面源显示 URL 是相对的 ( )也this.href总是返回绝对 URL http://blah.com/somePath( /somePath)。

如何获得 ? 的“真实”值(如页面源代码中所示)href

我只在 Firefox 19 中尝试过这个。

html javascript jquery

2
推荐指数
1
解决办法
766
查看次数