私は、列名を表示するためのテキストフィールドを使用しています。JasperReports APIで式を設定する正しい方法は何ですか?
方法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 + "}");
しかし、それは例外をスローし、上記の方法を使用して上のが言って:列の対応する名前を示すために私は次の方法を試してみました
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$
しかし、以下の行を使うと列名が正しく設定されます。
方法2:
textField.setExpression(new JRDesignExpression("new String(\""+colTitle+"\")"));
私の疑問がある:前記第一の方法が使用されているデータを表示するため
1。それではどうして例外がないのでしょうか?
2.同じメソッドを列名の表示に使用した場合、なぜそれらの例外がスローされましたか?
3. 2番目の方法はどのように機能しましたか?