小编ata*_*lor的帖子

如何最好地从groovy中的键列表/值列表中获取地图?

在python中,我可以执行以下操作:

keys = [1, 2, 3]
values = ['a', 'b', 'c']
d = dict(zip(keys, values))

assert d == {1: 'a', 2: 'b', 3: 'c'}
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来构建一个groovy中的地图,从一个键列表和一个值列表开始?

python groovy dictionary

8
推荐指数
3
解决办法
4756
查看次数

Groovy将代码添加到构造函数中

在Groovy中是否有一种方法可以在实例化类时向构造函数添加代码?我有一个Groovy类(但我无法修改这个特定的源代码),但我希望有一种方法可以注入代码(可能通过元类),所以我的代码作为构造函数的一部分运行(在此case只有一个,默认构造函数).

谢谢,杰夫

groovy metaprogramming metaclass

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

Grails 2.1.0是否需要Groovy 1.8?

我最近将Grails应用程序更新为2.1.0,但是当我war在项目中时出现以下错误:

java.lang.NoClassDefFoundError:org/codehaus/groovy/transform/powerassert/ValueRecorder

  • Groovy版本1.7.5
  • Grails版本2.1.0

这两个版本兼容吗?

grails groovy bamboo grails-2.1

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

ip AWS lambda函数使用什么?

我对网络不是很了解,但这是我的问题:我需要从AWS lambda函数连接到MySQL服务器,这是防火墙后面的,并且要"白色"我的AWS lambda我需要知道它使用的是什么IP.

据我了解,它取决于VPC子网.是不是,如果我的VPC子网CIDR是172.31.16.0/20,IP可能会从172.31.16.0变化到172.31.16.254?

mysql networking amazon-web-services aws-lambda

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

有没有办法参数化云形成资源名称?

我正在尝试使云形成模板上的 AutoScalingGroup 名称动态化。我在想这是否可以通过参数或任何其他方式实现?

"DynamicASGName": {
      "Type": "AWS::AutoScaling::AutoScalingGroup",
      "Properties": {
      ...properties here...
      }
    }
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation

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

单元测试控制器方法?

我有一个像这样的控制器方法:

def search = {
    def query = params.query

            ...

    render results as JSON
}
Run Code Online (Sandbox Code Playgroud)

我如何对此进行单元测试?具体来说,我如何调用搜索来设置params.query,以及如何测试方法的结果render?有没有办法模拟渲染方法呢?

testing grails groovy unit-testing controller

6
推荐指数
1
解决办法
2880
查看次数

在Grails中使用Groovy ++的经验

有没有人试图实现一个Groovy ++的Grails解决方案?

grails groovy groovy++

6
推荐指数
1
解决办法
1010
查看次数

groovy脚本类路径

我正在用Groovy编写一个脚本,我希望有人能够通过运行来执行它./myscript.groovy.但是,这个脚本需要第三方库(MySQL JDBC),我不知道有什么方法可以通过一个-classpath或者-cp参数来提供脚本,例如

`./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar`
Run Code Online (Sandbox Code Playgroud)

由于我不会进入这里的原因,实际上不可能使用-classpath/-cp参数向脚本提供JAR位置.有什么方法可以从脚本本身加载JAR吗?我试过用@Grab

import groovy.sql.Sql


@Grab(group='mysql', module='mysql-connector-java', version='5.1.19')
def getConnection() {
    def dbUrl = 'jdbc:mysql://database1.c5vveqm7rqgx.eu-west-1.rds.amazonaws.com:3306/vouchers_prod'
    def dbUser = 'pucaroot'
    def dbPassword = 'password'
    def driverClass = "com.mysql.jdbc.Driver"

    return Sql.newInstance(dbUrl, dbUser, dbPassword, driverClass)
}

getConnection().class
Run Code Online (Sandbox Code Playgroud)

但这会导致以下错误:

Caught: java.sql.SQLException: No suitable driver
java.sql.SQLException: No suitable driver
        at monitor-vouchers.getConnection(monitor-vouchers.groovy:13)
        at monitor-vouchers.run(monitor-vouchers.groovy:17)
Run Code Online (Sandbox Code Playgroud)

有没有办法可以使用just执行这个脚本 ./monitor-vouchers.groovy

groovy classpath

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

如何知道用户是否已登录(在GSP中)

我有index.gsp一个页面.在该页面中有一个注册按钮和一个登录按钮.一旦您登录,如果登录正常,该应用程序将再次驱动您index.gsp.我需要,如果用户登录,这些按钮会消失,而是说"你好,[用户名]".我已尝试使用此代码,但它不起作用(它从未登录):

在控制器中:

def dologin(){

    def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password) )

    if(user){
        redirect (controller:'usuario', action:'index')
    }else{

        flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id])
    def userlogged = springSecurityService.getCurrentUser()
                render view: 'index', model: [user: user]
}

}
Run Code Online (Sandbox Code Playgroud)

在index.gsp中(不完整,只有重要的部分):

<sec:ifNotLoggedIn>

<div id="buttons">
    <div id="login"><a href="loginurl">Login</a>
    </div>
    <div id="register"><a href="registerurl">Registrarse</a>
    </div>
</div>
</sec:ifNotLoggedIn>
<sec:ifLoggedIn>

<div id="greet">Hello!</div> 

</sec:ifLoggedIn>
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

谢谢.

grails spring-security gsp

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

grails搜索结果的分页

我有域"country",在list.gsp上我有搜索块和输入字段.第一个问题是,当我尝试在我的列表上使用paginate时总是显示所有结果,在这种情况下我设置了解决方案并且我只发送了10个值用于显示(如果你知道另一个解决方案请告诉我).我的搜索看起来像这样

    def search = {
       if(query){
           def srchResults = searchableService.search(query, params)

           def result =  Country.executeQuery("select  new map(a.name as name, a.datacenter as datacenter) from Country a where a.name like '%"+ params.q + "%'")

           if (params.offset)
           {
               x = params.offset.toInteger()
               y = Math.min(params.offset.toInteger()+9, result.size()-1)
           } else
            {
            x = 0
            size = result.size() - 1
            y = Math.min(size, 9)
             }     
           def q=params.q

          [countryInstanceList: result.getAt(x .. y), countryInstanceTotal:result.size(), q:params.q]

       }else{
           redirect(action: "list")
       }
   }
Run Code Online (Sandbox Code Playgroud)

现在我有另一个问题,当我按下一页然后我的搜索字段中的参数是清理,结果为空.我试图将字段值作为参数发送,但我做错了.

我的搜索页面如下:

<g:form action="search">
            <div class="search" >
                Search Country …
Run Code Online (Sandbox Code Playgroud)

grails pagination

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