Grails GSP G: установить задачу счетчика - PullRequest
3 голосов
/ 20 августа 2011

Я пытаюсь суммировать набор значений, используя пример g: set из документации Grails 1.3.7, но похоже, что g: set обрабатывает целые числа как строки.

При значениях для $ {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>

Ответы [ 2 ]

7 голосов
/ 21 августа 2011

Другой вариант - убедиться, что totalScore является целым числом, например:

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

Я считаю, что из-за totalScore это целое число, поэтому вам не придется беспокоиться о конкатенациисложения.

1 голос
/ 21 августа 2011

Если вы ЗНАЕТЕ, что значение grossScore.score является целым числом, вы, вероятно, можете просто поменять их местами в своем добавлении:

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

Обычно левая часть операции определяет тип операции, если она существует. Поскольку слева отображается totalScore, а это всего лишь Object (по умолчанию для g: set), используется операция Object.plus () по умолчанию, которая очень похожа на String.

Если вы делаете grossScore.score с левой стороны, он должен попытаться использовать Integer.plus (), который должен дать вам то, что вы хотите.

...