小编tim*_*tes的帖子

grails g:选择标签

我正在使用ag:select标签,如下所示:

<td><g:select name="newCity"
        id="${'newCity_' +cityData.uid}"
        from="${cityData.name}"
        value="${cityData.someValue}"
        noSelection="${['null':'Select City...']}" class="newCity" />
</td>
Run Code Online (Sandbox Code Playgroud)

它呈现以下HTML:

<td>
<select name="newCity" id="newCity_abc" class="newCity" >
<option value="null">Select City...</option>
<option value="A" >A</option>
<option value="B" >B</option>
<option value="C" >C-</option>
<option value="D" >D</option>
</select>
</td> 
Run Code Online (Sandbox Code Playgroud)

但是,我希望我的HTML看起来像这样; 因为我正在做一些javascript验证,所以插入了类:

<td>
<select name="newCity" id="newCity_abc" class="newCity" >
<option value="null">Select City...</option>
<option value="A" class="populated" >A</option>
<option value="B" class="notpopulated" >B</option>
<option value="C" class="populated" >C</option>
<option value="D" class="notpopulated" >D</option>
</select>
</td>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我是否需要创建自定义标记库才能实现此目的?

任何帮助将不胜感激,谢谢!

grails groovy

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

Grails multiple g:如果测试多个条件

我有一个选择的TYPES框,每个类型都有自己的PARAMETERS.TYPES选择框将触发一些调用模板的AJAX并在我的视图上呈现PARAMETER选择框.参数由名称:值对组成,因此每个名称可以有许多值.

一些参数需要multiple ='true',以便用户为每个名称选择多个值,而其他参数只需要限制为一个选项.

在我的gsp页面中,我有一堆这样的:

    <g:if test="${it?.getKey().toString().equals('PARAMETER_A')}">
      <td><g:select multiple="true" optionKey="id" optionValue="value" name="sampleParameters" id="parameter" value="${params?.sampleParameters}" from='${it?.getValue().sort()}'></g:select></td>
    </g:if>
    <g:if test="${it?.getKey().toString().equals('PARAMETER_B')}">
      <td><g:select multiple="true" optionKey="id" optionValue="value" name="sampleParameters" id="parameter" value="${params?.sampleParameters}" from='${it?.getValue().sort()}'></g:select></td>
    </g:if>
Run Code Online (Sandbox Code Playgroud)

我的问题是我有一个特定TYPE的6个参数需要选择多个值,其余的则没有.有没有一种方法可以在ag中测试多个东西:if if like like like java in?如:

if(something.equals(PARAMETER_A) || something.equals(PARAMETER_B))
Run Code Online (Sandbox Code Playgroud)

等等

有没有办法在groovy中做类似于java的方法?

grails

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

使用Groovy的DSL - >传递参数值

我是Groovy的新手,我正在为一些特定的任务编写一个迷你DSL.为此,我一直在尝试解决下面这样的问题:我想通过调用此代码(不使用parantheses)来打印(和/或返回)5:

give me 5 
Run Code Online (Sandbox Code Playgroud)

我希望下面这样的定义可行:

def give = {clos ->  return clos} 
def me = {clos ->  println clos; return clos} 
Run Code Online (Sandbox Code Playgroud)

但事实上并非如此.你能帮我解释一下如何定义"给"和"我",以便用表达式"给我5"返回值5,其中必须是一个闭包,给出也可以是metaClass,属性等.

提前致谢!IV

dsl groovy

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

在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创建/管理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
查看次数

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
查看次数

cxf-codegen-plugin端口到Gradle

我试图复制这个插件在Gradle中的作用.如果我执行:

./wsdl2java -encoding UTF-8 -d /src/target/generated-sources/cxf -fe jaxws21
-sn UserSoapServicePorts -faultSerialVersionUID 1 -xjc-Xannotate 
-p http:... -p urn:... -p urn:... -p urn:... -p urn:h... -p urn:... 
-p urn:... -p urn:... 
-verbose /src/xmlTemp/user-soap-v1.wsdl 
Run Code Online (Sandbox Code Playgroud)

...然后我得到:

an 22, 2016 3:51:05 PM org.apache.cxf.wsdl11.WSDLServiceBuilder checkForWrapped
INFO: Operation {urn:stuff:wsdl:person:v1}doSomething cannot be unwrapped, input message must reference global element declaration with same localname as operation
Run Code Online (Sandbox Code Playgroud)

据我所知,尽管线条相同.什么想法可能是错的?

cxf gradle cxf-codegen-plugin

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