小编rdm*_*ler的帖子

命名参数

我有方法

def test(String a, String b) { }
Run Code Online (Sandbox Code Playgroud)

我想用动态参数图来调用它.我总是这样

test(['1','2']); //valid call
Run Code Online (Sandbox Code Playgroud)

并且

test([a:'1',b:'2']); //=> does not work
Run Code Online (Sandbox Code Playgroud)

将工作.但事实并非如此.所以我记得传播操作符,但无法让它工作....

有没有办法用某种地图作为参数而不是单个参数调用上面的方法?

groovy named-parameters

46
推荐指数
5
解决办法
5万
查看次数

Groovy:是不是有开箱即用的stringToMap?

作为一个以groovy开头的tcl开发人员,我对groovy中的列表和地图支持感到有些惊讶.也许我在这里遗漏了一些东西.

我习惯在tcl中即时转换字符串,列表和数组/映射.在tcl中,类似于

"['a':2,'b':4]".each {key, value -> println key + " " + value}
Run Code Online (Sandbox Code Playgroud)

是可能的,在groovy中,每个命令都会遍历字符串的每个字符.

这可能是一个很大的问题,因为我可以轻松地使用像split或tokenize命令这样的东西,但由于序列化的列表或映射不仅仅是"a:2,b:4",因此解析起来有点困难.

似乎griffon开发人员使用stringToMap库(http://code.google.com/p/stringtomap/),但该示例也无法处理序列化地图.

所以现在我的问题是:在groovy中解析地图或列表的最佳方法是什么?

干杯,拉尔夫

PS:这是一个时髦的问题,但我用grails标记了它,因为我需要grails的这个功能,我想通过URL传递地图

更新:对我来说,这仍然是一个悬而未决的问题......所以这里有一些针对同样问题的人的更新:

  • 当你把一个Map变成一个String时,a .toString()会导致在所有情况下都无法转换回地图的东西,但是.inspect()会给你一个可以回溯到地图的String!
  • 在Grails中,有一个- .encodeAsJSON()并且JSON.parse(String)- 两者都很棒,但我还没有检查解析器将使用JSON函数做什么(可能的安全问题)

string grails groovy map params

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

我自己在GORM中的身份

我试图改变grails中的标准'id':

calls Book {
  String id
  String title

  static mapping {
    id generator:'assigned'
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我很快发现这打破了我的自举.代替

new Book (id:'some ISBN', title:'great book').save(flush:true, failOnError:true)
Run Code Online (Sandbox Code Playgroud)

我不得不使用

def b = new Book(title:'great book')
b.id = 'some ISBN'
b.save(flush:true, failOnError:true)
Run Code Online (Sandbox Code Playgroud)

否则我会在调用save()'错误之前手动分配这个类的'ID.

但到目前为止还可以.

然后我在bookController的保存操作中遇到了同样的问题.但这一次,解决方法并没有成功.

有什么建议?

我知道,我可以重命名id,但之后我将不得不改变所有的脚手架视图......

grails grails-orm

19
推荐指数
2
解决办法
9705
查看次数

如何解析groovy代码?

由于groovy擅长解析几乎任何东西,搜索如何解析groovy代码将不会显示任何好结果 - 所以我希望SO社区能够提供帮助:-)

我想为grails域类编写一些(图形)编辑器,但不想重新发明轮子.

通过反射检查域类很容易,但我想更进一步 - 我想修改代码并将其作为域类文件写回.

一个问题是反射(以及AST也是afaik)将丢弃所有注释和格式(格式化不是大问题,我可以打印文件)...

任何想法,我可以找到一个groovy解析器,我可以在其上构建我的想法?

grails groovy parsing

16
推荐指数
1
解决办法
5275
查看次数

如何实现"远程"域?

想象一下两个共享域类的Grails应用程序.也许是一个Book域类.

一个应用程序被识别为数据的所有者,必须访问域数据.像亚马逊和亚马逊的网络服务.

我想拥有的应用程序将使用普通的域类并通过Web服务公开数据是微不足道的 - 在grails中没有问题.

但是在其他应用程序中实现域的最佳做法是什么?

  • 使用服务访问远程域而不是实现本地域类?
  • 实现一个本地域类,覆盖get() - 方法以获取远程数据并使用本地数据库作为缓存?
  • 您还有什么其他解决方案?

grails groovy grails-domain-class

13
推荐指数
1
解决办法
1342
查看次数

在Grails中对要批准的域实例进行版本控制

我正在寻找扩展Grails CRUD生成功能的最佳方法.它应该是一个Grails插件,它为以下功能提供了额外的生成器:

  • 对于历史记录,应保存对扩展域实例的任何更改(作为其版本)
  • 只有一个版本的实例可以处于活动状态
  • 用户应该能够激活不是由他创建的实例版本(当前活动的实例应该被停用)(4眼原则)
  • 差异视图很不错

Grails开箱即用的脚本应该尽可能小.到目前为止,我确定了3个实施设计策略:

  1. 具有相同模式的镜像表,其中包含版本(将域/表的数量加倍).激活的版本将复制到本机域,反之亦然.
  2. 在域类中使用鉴别器.一些新列将添加到域中(如state [active,notActive],lastUpdatedBy,lastUpdatedDate ...)
  3. (De-)使用BLOB将实例序列化到特殊域(例如,domain.properties为JSON)

任何解决方案都有利有弊.实施它的最佳方法是什么?也许有一种更简单的方法.

grails grails-orm

13
推荐指数
1
解决办法
590
查看次数

Spring Security with oidc:刷新令牌

带有 Spring Security 5 的 Spring Boot 2 可以配置为使用 openID 连接 ID 提供程序进行身份验证。我仅通过配置 Spring Security 就设法设置了我的项目 - 这适用于各种完美预配置的安全机制,例如缓解会话固定。

但是似乎 Spring Security 在令牌过期时不会自行刷新令牌(存储在会话中)。

是否有设置或我必须自己照顾刷新?

更新:Spring Boot 2.1 已经发布,所以是时候重新审视这个问题了。我仍然不知道 accessToken 现在是否可以自动刷新,或者我是否必须为此编写代码......

spring-security jwt openid-connect refresh-token

12
推荐指数
2
解决办法
4672
查看次数

Rails上的Javascript

刚开始尝试HTML5功能,真的很喜欢localStorage.

现在我想知道创建一些让生活更轻松的库是否合理.容易将对象从localStorage持久保存到server-DB的东西.类似于object.findAllByAttribute(Attribute)等.

所以我的问题是:是否已经有一些东西可以帮助我编写离线html5应用程序?如果没有,它会有意义还是我在想错路?

javascript local-storage

11
推荐指数
1
解决办法
2004
查看次数

是否可以在plantUML中为UML项目使用自定义图像?

当您想要创建标准UML图时,PlantUML非常强大.

但我目前考虑使用PlantUML来记录EIP路线(例如这些图像上的路线:https://www.google.de/search? q = camera +route&safe = off&source = lnms&tbm = isch ).

如果您可以为类指定另一个图像而不是普通框,那么这将非常简单.像Sparx Enterprise Architect中的SVG或WMF图像或形状脚本.

我在文档中找到的唯一自定义图像,那些微小的精灵......

plantuml

11
推荐指数
2
解决办法
4530
查看次数

从groovy中访问一个java类

我有一个简单的java类:

package test;
class Hello {
  public static void main(String[] args) {
    System.out.println("Hi");
  }
}
Run Code Online (Sandbox Code Playgroud)

我做了什么

javac Hello.java
Run Code Online (Sandbox Code Playgroud)

问题:现在我想从一个groovy脚本访问这个类(access.groovy)...

import test.*
Hello.main(null)
Run Code Online (Sandbox Code Playgroud)

groovy -cp . access.groovy
Run Code Online (Sandbox Code Playgroud)

会导致一个MissingPropertyException.我究竟做错了什么?

java groovy

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