我目前正在处理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 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) 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更专业,因此该规则不适用.
我已经构建了我的第一个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,但我不想去那条路,因为我收到了很多循环引用错误
我的项目有如下代码:
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之后继续评估表达式吗?
我想要而不是gradle cleanIdea idea -x compileJava -x compileTestJava
打电话给像gradle ideaNoRecompile
在做一个重构时进入这个.调用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对我们来说确切.