我是groovy的新手,刚开始探索它的元编程功能.我坚持在bean构造函数调用中添加缺少的属性.
在与FactoryBuilderSupport一起使用的类中,我想动态添加在构造函数调用期间尚未定义和提供的那些属性.这是精简版:
@Canonical
class MyClass {
def startDate
def additionalProperties = [:]
def void propertyMissing(String name, value) {
additionalProperties[name] = value
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我构造具有未知属性的类,则不添加proprty但是我得到了一个MissingPropertyException:
def thing = new MyClass(startDate: DateTime.now(), duration: 1234)
Run Code Online (Sandbox Code Playgroud)
属性持续时间不存在,我预计它将通过处理propertyMissing.据我所知groovy,调用tuple-constructor会导致无参数构造函数调用,然后调用groovy生成的setter.那么为什么我会得到一个MissingPropertyException?
由于我是groovy的新手,我可能缺少一些基本的AST或MOP规则.我非常感谢你的帮助.
在spring框架中,如果我将一个bean定义为范围"protoype"并且它是另一个bean的父级.子bean会自动成为原型吗?
例:
<bean id="a" class="..." scope="prototype"/>
<bean id="b" class="..." parent="a"/>
Run Code Online (Sandbox Code Playgroud)
b的范围是什么?
我有一个具有两个依赖一个Clojure的Leiningen项目A,并B和传递依赖X它A和B依赖。
A ? X [version 1.0]
B ? X [version 2.0]
Run Code Online (Sandbox Code Playgroud)
这两个A和B是外部依赖性。问题是我不能使用Xfor 的第 2A版或for 的第 1 版X,B因为它抛出java.lang.NoSuchMethodError
Clojure 中是否有一个插件可以帮助遮蔽两者的传递依赖关系A,B或者提供一种惯用的处理方式?
需要有关groovy中嵌套循环语法的指导.如何使用iterator打印(a.name的值,b.name的值)的值?
List a
a.each {
print(it.name)
List b = something
b.each {
print(value of a.name, value of b.name)
}
}
Run Code Online (Sandbox Code Playgroud) 我使用ergoemacs-mode,clojuremode和autocomplete
自动完成功能非常好.我该怎么按才能定义一个函数?我习惯了Cursive,但我想使用免费的Emacs,我需要去定义功能.
这是我的init.el档案:
(global-set-key [f8] 'neotree-toggle)
;; Set bigger fonts
(set-default-font "Ubuntu Mono-16")
(add-hook 'clojure-mode-hook 'turn-on-eldoc-mode)
(setq nrepl-popup-stacktraces nil)
(add-to-list 'same-window-buffer-names "<em>nrepl</em>")
;; General Auto-Complete
(require 'auto-complete-config)
(setq ac-delay 0.0)
(setq ac-quick-help-delay 0.5)
(ac-config-default)
;; ac-nrepl (Auto-complete for the nREPL)
(require 'ac-nrepl)
(add-hook 'cider-mode-hook 'ac-nrepl-setup)
(add-hook 'cider-repl-mode-hook 'ac-nrepl-setup)
(add-to-list 'ac-modes 'cider-mode)
(add-to-list 'ac-modes 'cider-repl-mode)
(add-hook 'clojure-mode-hook 'paredit-mode)
(require 'package)
(add-to-list 'package-archives
'("melpa-stable" . "http://melpa-stable.milkbox.net/packages/"))
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
;; Initialize all the …Run Code Online (Sandbox Code Playgroud) 我想调试一个复杂的嵌套映射.很快就可以快速弹出一个Swing TreeView,让我以交互方式导航地图,就像IDE中任何体面的调试器一样.在Clojure中有一个简单的方法吗?
在升级到Grails 3.0.1的过程中.除了在2.4.4中运行良好的集成测试外,一切都很好.
我注意到grails.test.spock.IntegrationSpec不再存在org.grails:grails-test:3.0.1了.
尝试spock.lang.Specification通过Gradle integrationTest任务扩展和运行,但它似乎没有注入Spring资源.还试图@Integration得到同样的错误,GGTS还抱怨:
General error during canonicalization: Provider "data" not installed java.nio.file.FileSystemNotFoundException: Provider "data" not installed at java.nio.file.Paths.get(Paths.java:147) at
org.grails.io.support.MainClassFinder.searchMainClass(MainClassFinder.groovy:37) at
org.grails.compiler.injection.test.IntegrationTestMixinTransformation.visit(IntegrationTestMixinTransformation.groovy:82) at
org.codehaus.groovy.transform.ASTTransformationVisitor.visitClass(ASTTransformationVisitor.java:150) at org.codehaus.groovy.transform.ASTTransformationVisitor
...
Run Code Online (Sandbox Code Playgroud)
所以我想知道IntegrationSpec3.0 是否仍然存在.我应该怎么做呢?
例如在地图中:
{"test-1" 23,
"test-2" 456,
"test-3" 23}
Run Code Online (Sandbox Code Playgroud)
如何找到有价值的钥匙23?
我试图将其中包含日期的字符串与当前日期进行比较,但是当我尝试将字符串解析为日期格式时,它总是给我一个错误。
出现问题的代码部分:
String data = "12-05-2020"
Date teste = Date.parse("dd-MM-yyy",data)
Run Code Online (Sandbox Code Playgroud)
错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.Date.parse() is applicable for argument types: (String, String) values: [dd-MM-yyy, 12-05-2020]
Possible solutions: parse(java.lang.String), wait(), clone(), grep(), any(), putAt(java.lang.String, java.lang.Object)
at Script1.run(Script1.groovy:2)
Run Code Online (Sandbox Code Playgroud)
这似乎是一件非常愚蠢的事情,所以,如果你能帮助我的话!多谢
几个月前,我尝试了一些 Vaadin。从那以后,当我没有运行本地网络服务器(在 Windows pc 上)时,我的 localhost:8080 会显示一个 Vaadin 后备页面
.
当我运行 Apache Tomcat 时,一切正常,localhost:8080 会显示 Apache 页面。但是当我尝试通过 Tomcat 管理器部署 WAR 文件时,我再次以 Vaadin 的回退结束,但这次没有图像

这是如何集成的,我该如何摆脱它?