我有一个Maven项目<packaging>jar</packaging>和<version>0.0.11-SNAPSHOT</version>.当我运行时mvn clean install,它将以下部署到我的本地存储库
〜/ .m2目录/库/ COM /示例/ myproject的/ 0.0.11-SNAPSHOT /共享-0.0.11-SNAPSHOT.jar
我预计生成的工件的名称将-SNAPSHOT替换为构建JAR的时间戳,如:
〜/ .m2目录/库/ COM /示例/ myproject的/ 0.0.11-SNAPSHOT /共享-0.0.11-20110217011633.jar
为什么没有发生这种替换?
基于这个问题,我想我可以在(例如)中定义这样的东西resources.groovy
def currentEnv = Environment.current
if (currentEnv == Environment.CUSTOM && currentEnv.name == 'mock') {
println 'Do some stuff for the mock env'
}
Run Code Online (Sandbox Code Playgroud)
if语句中的代码应该在我运行时执行(例如)grails run-app -Denv=mock但是它不是,我做错了什么?
我想获得具有不同语言的所有语言环境的列表,其中ISO3代码用于标识语言环境的语言.我认为以下应该有效
class ISO3LangComparator implements Comparator<Locale> {
int compare(Locale locale1, Locale locale2) {
locale1.ISO3Language <=> locale2.ISO3Language
}
}
def allLocales = Locale.getAvailableLocales().toList()
def uniqueLocales = allLocales.unique {new ISO3LangComparator()}
// Test how many locales there are with iso3 code 'ara'
def arabicLocaleCount = uniqueLocales.findAll {it.ISO3Language == 'ara'}.size()
// This assertion fails
assert arabicLocaleCount <= 1
Run Code Online (Sandbox Code Playgroud) 假设我有一个如下控制器动作:
def someAction = {
if (someCondition) {
[foo: 1, bar: 2]
} else {
[foo2: 4, bar2: 6, baz2: 6]
}
}
Run Code Online (Sandbox Code Playgroud)
在someAction.gsp我不知道模型的键是什么.有没有办法可以在不知道密钥名称的情况下迭代模型的键和值?
在我的控制器类中有以下代码
class MyController {
def flickrService
def index = {
def data = flickrService.search {
tags 'tag,tag2,tag3'
page 3
perPage 14 // Look ma!
}
[urls:data.urls,page:data.page,pages:data.pages]
}
}
Run Code Online (Sandbox Code Playgroud)
我还创建了一个index.gsp文件.因为我是groovy grails的新手 - 我无法弄清楚如何访问视图中flickrservice返回的数据.我可以在索引视图中访问上面定义的"数据",还是需要在循环返回数据之前在控制器中设置它?任何帮助将受到高度赞赏.谢谢
我正在使用groovy扩展传统脚本系统。源脚本是“类似于Java的”,因此它几乎可以解析为具有一些预处理的常规脚本。
我正在使用invokeMethod()和missingMethod()来传递旧代码,从而使我能够使用闭包和其他常规功能来增强脚本。但是,原始脚本使用“ $ foo”类型的字符串来引用变量。当遗留方法被missingMethod()捕获时,我需要它不将该字符串评估为GString,而只是逐字输出。这有可能吗?
我写了一个Grails标签,它只是围绕Grails select标签的一个非常薄的包装器
package com.example
class MyTagLib {
def listTrees = {attrs ->
List<TreeDto> allTrees = getMandatoryAttributeValue(attrs, 'trees')
out << g.select(from: allTrees)
}
}
Run Code Online (Sandbox Code Playgroud)
我已经为这个类进行了单元测试,但是当我运行它时,在执行最后一行时出现以下错误:
groovy.lang.MissingMethodException:没有方法签名:com.example.MyTagLib.select()适用于参数类型:(java.util.LinkedHashMap)
g在运行单元测试时,似乎无法使用命名空间中grails标记的引用.我尝试过创建集成测试,但这也不起作用.
有没有办法测试一个调用另一个标签的标签,而无需对其他标签的输出进行存根/模拟?
在Eclipse中,我设置了Java格式化程序,只有当它们超过120个字符时才会换行.我希望在格式化JSP文件时使用相同的设置,但是当它们在超过90个字符时包装它们时,是否可以更改它?
我的Grails应用程序具有以下命令对象
class MyCommand {
@BindUsing({
obj, source ->
User.findByUsername(source.username)
})
User user
// other stuff not relevant to this question
}
Run Code Online (Sandbox Code Playgroud)
请求参数包括username唯一标识的参数User.我添加了@BindUsing注释,以便将user命令对象的属性绑定到相应的User实例.但是,在数据绑定完成后user,即使username参数正确,该字段也为空.我究竟做错了什么?
我在一个带有 id 的 div 中渲染一个 Highcharts 图表,container如下所示:
new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line',
zoomType: 'x'
},
xAxis: {
categories: ['Jan', 'Feb']
},
series: [{
data: [29.9, 71.5]
}]
});
Run Code Online (Sandbox Code Playgroud)
new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line',
zoomType: 'x'
},
xAxis: {
categories: ['Jan', 'Feb']
},
series: [{
data: [29.9, 71.5]
}]
});
Run Code Online (Sandbox Code Playgroud)
请注意,我没有在变量中捕获对图表对象的引用。在图表渲染后的某个时间点,是否可以从图表对象已渲染到的元素的 ID 中获取对图表对象的引用(container在本例中)?
groovy ×6
grails ×5
java ×2
collections ×1
data-binding ×1
eclipse ×1
gstring ×1
highcharts ×1
javascript ×1
jsp ×1
maven-2 ×1
taglib ×1
tags ×1
unit-testing ×1