小编Qua*_*Bit的帖子

Groovy - 在对象实例化期间忽略地图中的额外属性

在对象实例化期间有没有办法让groovy忽略地图中的额外属性?例:

class Banana{
    String name
}
def params = [name:'someGuy', age:13]
new Banana(params)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,groovy抛出一个没有这样的属性:年龄异常(显然因为在香蕉类中没有定义年龄.没有手段只将地图中所需的属性映射到Banana类的构造函数,有没有办法告诉香蕉忽略额外的属性?

我注意到Grails域类没有遇到这个问题,我想在这里做同样的行为!

感谢您的帮助和建议!

groovy attributes constructor ignore map

21
推荐指数
2
解决办法
3025
查看次数

Grails不会将变量传递给嵌套模板

当我从控制器渲染视图时,传递给视图的变量位于视图中呈现的所有模板的范围内,包括嵌套在多个深层的模板.

但是,当我从控制器渲染模板时(如在ajax样式中),只有初始模板似乎可以访问变量,并且嵌套模板调用不共享此信息.例:

Views & Templates:
a.gsp
_b.gsp
_c.gsp
_one.gsp
_two.gsp
_three.gsp

//PasserController.groovy
class PasserController{
    def v = {
       render(view:"a", model:[time:System.currentTimeMillis()])
    }

    def t = {
        render(template:"one", model:[time:System.currentTimeMillis()])
    }
}    

//a.gsp
A Time is: ${time}<br />
<g:render template="b" />

//_b.gsp
B Time is: ${time}<br />
<g:render template="c" />

//_c.gsp
C Time is: ${time}<br />

//_one.gsp
One Time is: ${time}<br />
<g:render template="two" />

//_two.gsp
Two Time is: ${time}<br />
<g:render template="three" />

//_three.gsp
Three Time is: ${time}<br />
Run Code Online (Sandbox Code Playgroud)

输出如下:

For passer/v …
Run Code Online (Sandbox Code Playgroud)

grails controller view grails-controller

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

更改grails中注入的服务的名称

似乎无法找到关于此的信息,如果你有一些,请指向正确的主题/帖子/链接!

我有一个服务,让我们说它叫做'SomeServiceWithAReallyLongNameICannotChange'.当然,使用服务的正常方法是允许grails使用typless或typed表示法注入它们:

class SomeClass{
    //...
    def someServiceWithAReallyLongNameICannotChange
    //...
}
Run Code Online (Sandbox Code Playgroud)

- 要么 -

class SomeClass{
    //...
    SomeServiceWithAReallyLongNameICannotChange someServiceWithAReallyLongNameICannotChange
    //...
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将服务重命名为更短的内容,但仅限于我正在使用它的地方,因为我无法更改实际服务的名称.我尝试使用'as'表示法,就像使用import一样,我尝试在类型化声明中更改名称,但这些东西似乎都不起作用.这可能吗?

我试过这样的事情:

class SomeClass{
    //...
    def someServiceWithAReallyLongNameICannotChange as SS
    //and I tried
    def SomeServiceWithAReallyLongNameICannotChange SS
    //no joy
    //...
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

service grails

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

从groovy打印$ PATH - 字符被转义?

这里有点麻烦.我试图运行一个片段,如:

println 'echo $PATH'.execute().getText()
Run Code Online (Sandbox Code Playgroud)

我期望得到系统$ PATH变量的内容.但是,我改为:

$PATH
Run Code Online (Sandbox Code Playgroud)

我的猜测是$被转义,因此没有被bash评估.我也尝试了命令构建器语法,结果相同.有什么建议?

variables bash shell groovy

3
推荐指数
2
解决办法
1837
查看次数