我有一个问题,通过grails获取其中一个对象是我的代码:
Grails域名:
class Circle
{
String description
int howMany
static hasMany [rects: Rectangle]
constraints =
{
answer: blank false, nullable: false
}
Rectangle getRect(int x, int y)
{
Rectangle rect = Rectangle.findWhere(x: x, y: y);
rect
}
}
class Rectangle
{
int x
int y
String description
Circle circle
constraints =
{
circle blank: false, nullable: false
description blank: false, nullable: false
}
}
我通过控制器将我的圆形对象传递给视图,当然对象不是空的并且具有正确的值。
grails controller:
...
return [figure: circle, howManyX: xCount, howManyY: yCount]
...
xCount和yCount告诉我在视图中渲染模板的次数:
视图:
...
<g:render template="figureTemplate" model="[bean: figure, posX: x, posY: y]"/> // x and y are a variables in grails foreach loop
...
和我的模板:
<input type="text" name="text_${poY}_${posX}" text="${fieldValue(bean: bean, field: getRect(posX, posY).name)}
我知道我的代码不正确,因为fieldValue不是从object方法获取值的方法,而是来自对象变量的方法。因此可以通过方法以某种方式返回值?或者我应该使用不同的东西?
答案 0 :(得分:0)
我添加了二维数组,其中包含特定索引上的矩形,并将其从控制器返回到视图,在视图中我从此数组中获取值,这对我来说非常有效:
控制器:
...
return [figure: circle, howManyX: xCount, howManyY: yCount, arr: doubleArray]
...
视图:
<g:render template="figureTemplate" model="[bean: figure, posX: x, posY: y, rect: arr[x][y]"/>
模板:
<input type="text" name="text_${poY}_${posX}" text="${rect.description}/>
答案 1 :(得分:-1)
看起来您没有按照控制器中指定的名称引用对象。
如果您在控制器中返回以下地图:
返回[图:circle,howManyX:xCount,howManyY:yCount]
然后你必须通过地图KEY引用对象。
因此,如果您想引用&#34;圈&#34; 对象,则需要使用 $ {figure}
在您的视图代码和参考&#34; xCount&#34; , $ {howManyX} 等等。