小编tim*_*tes的帖子

在Grails选择列表上设置选项键和值?

我目前正在处理Grails应用程序,我正在寻找页面上的选择列表,并将其Key设置为一个值,将Value设置为另一个值.所有相关元素的代码如下:

域对象:

class Cars {
  String carType
  String car
}
Run Code Online (Sandbox Code Playgroud)

控制器:

def create() {
  List cars = Cars.list()
  [dealerInstance: new Dealer(params), cars: cars]
  render(text:"This site in curently under Maintainence!")
}
Run Code Online (Sandbox Code Playgroud)

视图:

<g:select name="cars.id" from="${cars}" optionKey="${carType}" optionValue="${car}"/>
Run Code Online (Sandbox Code Playgroud)

现在,当我运行此代码时,列表确实已填充,但数据如下所示:

<select id="cars.id" name="cars.id">
  <option value="com.app.Cars : 1">com.app.Cars : 1</option>
  <option value="com.app.Cars : 2">com.app.Cars : 2</option>
  <option value="com.app.Cars : 3">com.app.Cars : 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

然后当我尝试这个:

视图:

<g:select name="cars.id" from="${cars.car}" optionKey="${carType}" optionValue="${car}"/>
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

<select id="cars.id" name="cars.id">
  <option value="Audi">Audi</option>
  <option value="BMW">BMW</option>
  <option value="Scoda">Scoda</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这不是我想要的,我希望能够在此选择列表上设置不同的键值对,以便我可以在我的应用程序中使用该数据,我希望生成以下内容:

<select id="cars.id" …
Run Code Online (Sandbox Code Playgroud)

grails key key-value selectlist

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

在groovy中复制列表列表

我想执行一个副本并获得两个不同的对象,以便我可以在不影响原始文件的情况下处理副本.

我有这个代码(groovy 2.0.5):

def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = a
b.add([6,6,6,6,6,6])
println a
println b
Run Code Online (Sandbox Code Playgroud)

产生:

[[1, 5, 2, 1, 1], [one, five, two, one, one], [6, 6, 6, 6, 6, 6]]
[[1, 5, 2, 1, 1], [one, five, two, one, one], [6, 6, 6, 6, 6, 6]]
Run Code Online (Sandbox Code Playgroud)

看起来像b和a实际上是同一个对象

我可以用这种方式解决它:

def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = []

a.each {
    b.add(it)
}

b.add([6,6,6,6,6])
println a
println b
Run Code Online (Sandbox Code Playgroud)

产生我想要的结果:

[[1, …
Run Code Online (Sandbox Code Playgroud)

groovy

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

Grails表单提交原因404

我创建了一个非常简单的注册用户表单

<g:form name="signupForm" url="[controller:'users', action:'signup']">
  <g:textField name="username" placeholder="Username" />
  <g:passwordField name="password" placeholder="Password" />
  <g:textField name="email" placeholder="Email" />
  <g:actionSubmit class="right" value="Signup" action="update" />
</g:form>
Run Code Online (Sandbox Code Playgroud)

当我单击提交按钮时,我收到404错误The requested resource is not available.但是,如果我手动导航到完全相同的URL(或者甚至只是在404错误页面上选择地址栏并按回车键),那么它可以工作!

我的控制器看起来像这样,非常简单.

class UsersController {
    def signup() {
        render "Hello World"
    }
}
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果这是一个noob问题,但我已经查看了Grails文档,并且无法弄清楚为什么会发生这种情况.任何帮助非常感谢.谢谢.

grails

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

Grails错误安装插件rest-client-builder 1.0.2,错误的模块描述符

使用Grails 2.0.4,我正在尝试rest-client-builder:1.0.2使用这个...

grails install-plugin rest-client-builder
Run Code Online (Sandbox Code Playgroud)

...但Grails返回以下错误; 我已经尝试过清理,刷新依赖关系等等,继续得到同样的错误......

:: #rest-client-builder;1.0.2: java.text.ParseException: inconsistent module descriptor file found in 'http://plugins.grails.org/grails-rest-client-builder/tags/RELEASE_1_0_2/rest-client-builder-1.0.2.pom': bad organisation: expected='' found='org.grails.plugins'; 
Run Code Online (Sandbox Code Playgroud)

还尝试将插件作为依赖项链接BuildConfig.groovy,但是我得到了类似的错误......

compile (":rest-client-builder:1.0.2"){ export = false}

grailsCentral: bad organisation found in http://plugins.grails.org/grails-rest-client-builder/tags/RELEASE_1_0_2/rest-client-builder-1.0.2.pom: expected='' found='org.grails.plugins'
Run Code Online (Sandbox Code Playgroud)

grails plugins dependencies

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

当null作为参数传递时,Groovy选择了什么重载方法?

class SimpleTest {
    void met( Object a ) {
        println "Object"
    }

    void met( String b ) {
        println "String"
    }

    static main( args ) {
        SimpleTest i = new SimpleTest()
        i.met(null)
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码将生成输出"Object".它不会选择最专业的方法版本.在这种情况下,String比Object更专业,因此该规则不适用.

groovy

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

使用grails创建/管理RESTful API的有效方法是什么?

我已经构建了我的第一个grails应用程序.我的URL映射是默认应用程序提供的:

static mappings = {
    "/$controller/$action?/$id?"{
        constraints {
            // apply constraints here
        }
    }

    "/"(view:"/index")
    "500"(view:'/error')
}
Run Code Online (Sandbox Code Playgroud)

塞纳里奥

我有一个名为控制器,ColorController用行动savelist.它只是做这样的事情:

def save () {
   def colorInstance = new Color(params)
   colorInstance.save(flush: true)
}

def list () {
   [colorList: Color.list, colorTotal: Color.count()]
}
Run Code Online (Sandbox Code Playgroud)

我想为这些操作构建一个简单的API.

  • 保存操作应接受参数作为JSON,并在记录保存时提供成功的消息.
  • 列表操作应该将列表提供为JSON

问题

  • 我应该为api制作单独的URL映射吗?(例如http://<domain>/<app>/rest/controller/action)
  • 我应该为我的API制作一个单独的控制器吗?
  • 我使用spring security插件进行身份验证.但在某些时候我可能也想验证restful api.有什么解决方案?
  • 如果我使用相同的控制器,我如何修改这些简单的操作来做我需要的.

api rest grails restful-authentication

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

将grails域对象转换为JSON并对其进行操作

我有一个grails对象,我正在使用def json = object as JSON.我转换后,我想再添加一个名为pinJSON的属性,如下所示.

[location:[lat:23.03, lon:72.58]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,唯一能做到这一点的方法似乎如下

  1. 使用grails.converters.json将DomainClass序列化为JSON
  2. 将JSON转换为字符串
  3. 使用步骤2中的字符串创建JSONBoject
  4. 添加属性
  5. 将其转换回String

使用grails.converters.json执行此操作的任何其他方法?我尝试过使用Gson,但我不想去那条路,因为我收到了很多循环引用错误

grails json

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

链接空安全运算符

我的项目有如下代码:

params.stringValue?.trim().replaceAll('aa', 'a')
Run Code Online (Sandbox Code Playgroud)

我们预计,如果params.stringValue为空,这两者 trim()replaceAll()不会被调用.

但是我们NullPointerException在这一行上得到的结论replaceAll()是无法在null对象上调用.

我们必须将代码更改为:

params.stringValue?.trim()?.replaceAll('aa', 'a')
Run Code Online (Sandbox Code Playgroud)

为什么上面的第一个代码段不起作用?这是Groovy中的一个错误,它在一次遇到null之后继续评估表达式吗?

groovy nullpointerexception

5
推荐指数
3
解决办法
1941
查看次数

如何为gradle任务使用别名,就像使用-x参数调用它一样?

我想要而不是gradle cleanIdea idea -x compileJava -x compileTestJava 打电话给像gradle ideaNoRecompile

gradle

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

Groovy getProperties()调用超过1000次的不存在属性的getter

在做一个重构时进入这个.调用getProperties()导致我们的CPU使用率飙升.我们发现如果你有一个没有关联属性的getter,当你调用getProperties()时,getter被调用超过1000次.修复/解决方法是显而易见的,我们知道它与元编程有关,但为什么会发生这种情况(groovy源代码中的哪一点)?请参阅下面的groovy脚本代码:

class tester {

    int count = 0

    public getVar() {
       println count++ + " getVar() called!"
       return var
    }
}

def t = new tester()

t.getProperties()

println "done!"
Run Code Online (Sandbox Code Playgroud)

你应该看到getVar()调用超过1000次.1068对我们来说确切.

grails groovy metaprogramming

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