2011-08-20 90 views
3

我试图总结一组使用Grails 1.3.7文档中的g:set示例的值,但它看起来像g:set将整数视为字符串。grails gsp g:设置计数器问题

随着对$ {grossScore.score}值[5,5,4,4]代替总量为18,总的为5544

<g:set var="totalScore" value="0"/> 
<g:each var="grossScore" in="${Score.findAllByScorecard(cardGross)}"> 
    <g:set var="totalScore" value="${totalScore + grossScore.score}"/> 
</g:each> 

回答

7

另一种选择是,以确保totalScore是一个整数,像这样:

<g:set var="totalScore" value="${0}"/> 

我相信这将迫使totalScore是一个整数,所以你不必担心级联,而不是加法。

+0

是的,这是诀窍。谢谢。 – SeattleStephens

+0

如果有效,请[将答案标记为已接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。谢谢! – OverZealous

1

如果知道grossScore.score值是一个整数,你可能只是交换两个在另外:

<g:set var="totalScore" value="${grossScore.score + totalScore}"/> 

通常情况下,操作的左手决定操作的类型,假设这样的存在。由于左边有totalScore,它只是一个Object(对于g:set的默认值),所以使用默认的Object.plus()操作,这与String非常相似。

如果你让grossScore.score为左​​边,那么它应该尝试使用Integer.plus(),它应该给你你想要的。

+0

grossScore.score是一个Short,并且将它放在表达式中的第一个仍然给我字符串连接。我已经注意到其他短裤的问题,我不得不显式地将它们转换为整数。 – SeattleStephens