I have to add 'id' (String) for barcode in iReport.
The id is of 8 digits (this could vary), I want to add 4 leading 0's to it. So that the length of id becomes 12.
jrxml
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="PadStringNumber" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="07c0dc81-9b58-48f9-8129-e0e08fe1cb98">
<parameter name="id" class="java.lang.String">
<defaultValueExpression><![CDATA["23423552"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<title>
<band height="39" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="550" height="30" uuid="26317c0f-77c0-46cb-a4d8-1ee4fa1e7387"/>
<textFieldExpression><![CDATA[String.format("%12d",$P{id})]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
My current error is:
Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: String.format("%12d",$P{id})
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:291)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:618)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:586)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1020)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:567)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:551)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:281)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:504)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:315)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:251)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:119)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:558)
at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:119)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at PadStringNumber_1566475648252_841187.evaluate(PadStringNumber_1566475648252_841187:178)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:277)
... 13 more