在grails中获取方法返回值从多个到多个

时间:2014-09-08 20:31:06

标签: html grails groovy

我有一个问题,通过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方法获取值的方法,而是来自对象变量的方法。因此可以通过方法以某种方式返回值?或者我应该使用不同的东西?

2 个答案:

答案 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} 等等。