最近Jasper Report APIを4.5.1から6.3にアップグレードしました。 4.5.1では、レポートはHTML、PDF形式にエクスポートされます。 HTMLレポートの場合、子レポートにドリルダウンする機能があります。要求パラメータを処理するためのリンクをカスタマイズし、子レポートを開く前処理は、を作成し、ハイパーリンクを処理するためにJRHyperlinkProducerMapFactory
を登録しました。Jasper Report 6.3ハイパーリンク拡張
拡張機能は正しく登録されていますが、使用されていません。 Jasper Report 6.3のソースコードをチェックし、なぜデバッグしようとしたら、その方法を観察しました:net.sf.jasperreports.engine.JRAbstractExporter.getHyperlinkProducer(JRPrintHyperlink)
はJRHyperlinkProducer
を返しません。ここで
がExtensionsRegistryFactory
のコードです。このクラスでは
public class HyperlinkExtensionsRegistryFactory implements ExtensionsRegistryFactory
{
@Override
public ExtensionsRegistry createRegistry(String registryId, JRPropertiesMap properties)
{
return new ExtensionsRegistry()
{
@Override
public List getExtensions(Class extensionType)
{
if (extensionType.equals(JRHyperlinkProducerFactory.class))
{
JRHyperlinkProducerMapFactory producerFactory = new JRHyperlinkProducerMapFactory();
producerFactory.addProducer("ReportExecution", new RemoteExecutionHyperlinkProducer());
producerFactory.addProducer("Custom", new ExpandCollapseHyperlinkProducer());
return Arrays.asList(producerFactory);
}
return null;
}
};
}
public static class RemoteExecutionHyperlinkProducer implements JRHyperlinkProducer
{
@Override
public String getHyperlink(JRPrintHyperlink hyperlink)
{
return [custom link generation logic];
}
}
public static class ExpandCollapseHyperlinkProducer implements JRHyperlinkProducer
{
@Override
public String getHyperlink(JRPrintHyperlink hyperlink)
{
return [custom link generation logic];
}
}
}
、jasperreports_extension.properties
ファイルのエントリを作成しました。内容は次のとおりです。
net.sf.jasperreports.extension.registry.factory.HyperlinkExtensionFactory=<fully_qualified_path_to_HyperlinkExtensionsRegistryFactory>
何か不足していますか?何か間違いがある場合、私はそれを見つけ出すために親切に手伝っています。
設定の輸出業者のための新しいAPIがある場合、バージョン5.5.2から始まるバグがJasperReportsの中に存在しているようです導入されました。私たちはそれを認識しており、すぐにそれを修正します。しかし、それまでは回避策がありますが、HTMLエクスポータの作成方法によって異なります。正確な回答を提供できるように、輸出業者をインスタンス化するためのコードを投稿できますか? – Narcis