2012-07-23 40 views
2

我有一个grails对象,我想提取其中的第一个值。我是Grails新手,尚未完全了解该语言。 我用循环来提取它们,但这次我只需要第一个值,没有别的。 我尝试了用如何提取grails对象中的第一个值

<div id="blaa">${items}[0].value"</div> 

抛出一个错误。

下面通常是我如何循环通过对象。

   <g:each in="${items}" var="item" status="i"> 
        <li><a href="#">${item.value}</a></li> 
       </g:each> 

回答

1

这里使一些假设,因为你没有表现出大量的代码,你也没有告诉我们错误:

通过Grails的默认集合是一组。要在一组,你可以做这样的事情得到的第一个值:

${item.toArray()[0]} 
2

虽然@格雷格的答案是正确的,将让你得到的第一个元素,还有一个更简单的方法,这是非常接近你尝试过什么:

<div id="blaa">${items[0].value}"</div> 

的问题是,你需要有所有你的“代码”件${...}结构内。除此之外的所有内容都被视为字符串。

只要items是一个有序Collection(所以,一个List,一个MapRange,但不是一个Set),您可以访问它像在Groovy(语言Grails是内置)的阵列。 @ Gregg的回答明确地将items转换为数组,然后像数组一样访问它。

+0

关于你提到的最后一点:尽管大多数集合可以被索引数组类似,这不是真正的集合。 – ataylor 2012-07-23 18:49:34

+0

@ataylor - 啊,非常真实。我忘记了Sets没有任何内置命令的概念,这是基于索引的访问所必需的。我已经更新了我的答案以反映这一点。谢谢你纠正我。 – cdeszaq 2012-07-24 12:48:45

0

您可以使用${items.head().value}获得的第一个值