Ich verwende Textfelder zur Anzeige von Spaltennamen. Für den entsprechenden Namen der Spalte zeigt habe ich die folgende Methode versucht:Wie kann der Ausdruck mit der JasperReports-API korrekt festgelegt werden?
Methode 1:
textField.setX(currentXPos);
textField.setY(0);
textField.setWidth(columnWidth);
textField.setPrintWhenDetailOverflows(false);
textField.setHeight(colDtlBandHeight);
textField.setStretchWithOverflow(true);
textField.setStretchType(StretchTypeEnum.RELATIVE_TO_BAND_HEIGHT);
textField.setStyle(normalFont);
textField.setBlankWhenNull(true);
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(columnClass);
expression.setText("$F{" + columnName + "}");
Aber auf das obige Verfahren verwendet es eine Ausnahme auslöst sagen:
net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. Syntax error on token "ID", delete this token
value = SHIFT ID; //$JR_EXPR_ID=44$
2. Syntax error, insert ";" to complete BlockStatements
value = BILL NO.; //$JR_EXPR_ID=45$
3. Syntax error on token ".", invalid VariableDeclarator
value = BILL NO.; //$JR_EXPR_ID=45$
4. Syntax error on token "DATE", delete this token
value = BILL DATE; //$JR_EXPR_ID=46$
Aber bei Verwendung der unteren Zeilen wird die Spalte Names korrekt gesetzt.
Methode 2:
textField.setExpression(new JRDesignExpression("new String(\""+colTitle+"\")"));
Meine Zweifel sind:
1. Für die Daten der ersten Methode erwähnte Anzeige verwendet wird. Wie kommt es dann, dass es keine Ausnahmen gibt?
2. Warum hat es diese Ausnahmen ausgelöst, wenn die gleiche Methode zum Anzeigen von Spaltennamen verwendet wurde?
3. Wie funktioniert die 2. Methode?