我正在使用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)
这可能吗?
我是否需要创建自定义标记库才能实现此目的?
任何帮助将不胜感激,谢谢!
我有一个选择的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的方法?
我是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
我目前正在处理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) 我想执行一个副本并获得两个不同的对象,以便我可以在不影响原始文件的情况下处理副本.
我有这个代码(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) 我创建了一个非常简单的注册用户表单
<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应用程序.我的URL映射是默认应用程序提供的:
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
Run Code Online (Sandbox Code Playgroud)
塞纳里奥
我有一个名为控制器,ColorController用行动save和list.它只是做这样的事情:
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.
问题
http://<domain>/<app>/rest/controller/action)我有一个grails对象,我正在使用def json = object as JSON.我转换后,我想再添加一个名为pinJSON的属性,如下所示.
[location:[lat:23.03, lon:72.58]]
Run Code Online (Sandbox Code Playgroud)
到目前为止,唯一能做到这一点的方法似乎如下
使用grails.converters.json执行此操作的任何其他方法?我尝试过使用Gson,但我不想去那条路,因为我收到了很多循环引用错误
在做一个重构时进入这个.调用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对我们来说确切.
我试图复制这个插件在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)
据我所知,尽管线条相同.什么想法可能是错的?