grailsgsp:设置计数器问题

grailsgsp:设置计数器问题,grails,gsp,Grails,Gsp,我试图使用Grails1.3.7文档中的g:set示例对一组值进行求和,但看起来g:set将整数视为字符串 ${grosscore.score}的值为[5,5,4,4],而不是总数为18,因此总数为5544 <g:set var="totalScore" value="0"/> <g:each var="grossScore" in="${Score.findAllByScorecard(cardGross)}"> <g:set var="totalScor

我试图使用Grails1.3.7文档中的g:set示例对一组值进行求和,但看起来g:set将整数视为字符串

${grosscore.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>

如果您知道grosscore.score值是一个整数,您可以在加法中交换这两个值:

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

通常,操作的左侧决定操作的类型,假设存在这样的类型。因为totalScore在左边,它只是一个对象(默认为g:set),所以使用了默认的Object.plus()操作,这与String非常相似


如果将grosscore.score设置为左侧,则应尝试使用Integer.plus(),该选项将提供所需的内容。

另一个选项是确保
totalScore
为整数,如下所示:

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


我相信这将强制totalScore为整数,因此您不必担心连接而不是加法。

GrossCore.score是一个短值,将其放在表达式的第一位仍然会产生字符串连接。我注意到了短裤的其他问题,我必须显式地转换它们,而不是整数。如果它有效,请。谢谢