Почему шаблон не отображает правильные значения? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть шаблон, который просматривает карту и отображает информацию следующим образом:


       #{list items:report.getCategoryMap()?.keySet(), as:'cat'}
           %{models.reporting.TransactionReportItem item = report.getCategoryMap()?.get(cat);}%
            
              ${cat}
              ${item?.nbCredit}
              ${item?.getCreditPerc(report.nbCredit)}
              ${item?.nbDebit}
              ${item?.getDebitPerc(report.nbDebit)}
              ${item?.getTotalTransactions()}
            
       #{/list}

по какой-то причине шаблон всегда отображает результат getCreditPerc и getDebitPerc как 0.0


    public Double getCreditPerc(long totalCredit){
        double perc = (double) (nbCredit / totalCredit);
        Logger.info("nbCredit: %s, total cr: %s", nbCredit, totalCredit);
        return new Double(perc);
    }

При вызове шаблона я вижу вывод в журнале:

2011-11-21 13:54:22 ИНФО ~ [TransactionReportItem: 85] getDebitPerc () - nbDebit: 39, всего cr: 4984

Я попытался использовать примитивный тип вместо двойного объекта, но безуспешно. При отладке кода я вижу, что все значения установлены правильно.

Может быть это как-то связано с рендерингом шаблонов?

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Размещение журнала из другой функции не поможет в этом вопросе; -)

Однако проблема в том, что у вас есть два ints в Java, и вы делите их, чтобы получить целочисленное деление ...

Приведение этого целого числа к double слишком поздно ...

Попробуйте:

double perc = (double)nbCredit / totalCredit ;
1 голос
/ 21 ноября 2011

глупая идея от меня. Разве это не просто проблема в коде?

int nbCredit=39;
int total=4984;
double perc = (double) (nbCredit / totalCredit); // gives 0

nbCredit / total - это деление целых чисел с результатом <1, поэтому его можно округлить до 0 </p>

Вы пробовали с:

double perc =  (double)nbCredit / totalCredit;
...