2011-08-20 111 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