Static Text
フィールドを使用する代わりにText Field
、式を使用してテキスト出力を決定できるaを使用できます。この場合、PRINT_FOR
パラメータがクライアントまたは部門と等しいかどうかを確認し、等しくない場合は元の値を使用します。あなたの表現は次のようになります:
($P{PRINT_FOR}.equals("DEPARTMENT") ? "Department Label" : ($P{PRINT_FOR}.equals("CLIENT") ? "Client Label" : "Original Label"))
ここで、は、に等しい場合にDepartment Label
出力され、に等しい場合に出力され、上記のいずれにも等しくない場合に出力されます。PRINT_FOR
DEPARMTNENT
Client Label
PRINT_FOR
Client
Original Label
また、コードスニペットではPRINT_FOR
、Javaコードのパラメーターの値を設定せず、ジェネリックを使用していないことにも注意してくださいHashMap
。次のようになります。
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("PRINT_FOR", "CLIENT");
更新:あなたのコメントに基づいて、基本的に3つのレポートすべてを同時に1つとしてエクスポートする必要があります。これは、を使用して実現できます
JRPrintServiceExporter
。基本的に3つの
JasperPrint
オブジェクトを作成し、それらをリストに入れます。次に、エクスポーターを使用してそれらを印刷します。何かのようなもの:
//add all three JasperPrints to the list below
List<JasperPrint> jasperPrints = new ArrayList<JasperPrint>();
...
//create an exporter
JRExporter exporter = new JRPrintServiceExporter();
//add the JasperPrints to the exporter via the JASPER_PRINT_LIST param
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
//this one makes it so that the settings choosen in the first dialog will be applied to the
//other documents in the list also
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG_ONLY_ONCE, Boolean.TRUE);
exporter.exportReport();