ID と NAME の 2 つのフィールドを持つ単純なレポートがあります。実行時にユーザーが選択したパラメーターに応じて、ID または NAME で詳細を並べ替えたいと考えています。
私はこのようなことを試みました:
<sortField name="sort" type="Variable"/>
<variable name="sort" class="java.lang.String">
<variableExpression>
<![CDATA[$P{ord}.equals("name") ? $F{entity}.getName() : $F{entity}.getId().toString()]]>
</variableExpression>
</variable>
編集 1: データソースをパラメーターとして渡します。JasperReports から SQL クエリを実行しません。ソート済みのデータソースを JasperReports に渡すことはできると思いますが、レポートから直接データをソートしたいと思います。
編集 2: 以前のコードを確認したところ、問題なく動作しました。