У меня установлена более старая версия jasperserver на одном из моих клиентов, и ее обновление будет немного проблематично. Я испытываю то же самое с iReport 4.1.1. Моя локаль pt_BR, и я не хотел менять локаль сервера.
Я заметил, что iReport достаточно умен (или туп), чтобы не добавлять атрибут класса в класс textFieldExpression (я предполагаю, что он догадывается по типу переменной / поля). Jasperserver (по крайней мере, версия, которую я использую в любом случае), с другой стороны, не применяет шаблон к числам, если вы не указываете класс для этого выражения.
Другими словами: iReport генерирует эту разметку и отображает ее, как ожидается:
<textField pattern="###,###,##0.00" isBlankWhenNull="true">
<reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
Вы можете предположить, что my_var является BigDecimal. Это поле не отображается правильно на сервере, так как оно просто игнорирует шаблон (возможно, потому что предполагает, что все поля являются строками?), Если вы не укажете класс выражений для textFieldExpression:
<textField pattern="###,###,##0.00" isBlankWhenNull="true">
<reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
Обратите внимание на class = "java.math.BigDecimal" во второй последней строке. Отстойно, что мне пришлось вручную редактировать файл jrxml, но по крайней мере Jasperserver правильно отображает мой отчет.