我目前正在研究Jasper如何从资源包对象中检索值的自定义行为。据我所知,我可以传递资源包作为REPORT_RESOURCE_BUNDLE,报告中的$ R {SOME_TEXT}将被替换为资源包的值。
我想做的是做一个像下面这样工作的自定义getString()方法:
public String getString(){
if (map.get("SOME_KEY_A")!=null){
return map.get("SOME_KEY_A");
}else{
return map.get("SOME_KEY");
}
}
SOME_KEY_A是一个特定值,如果未定义,bundle将返回与SOME_KEY关联的文本(默认值)。
我试图覆盖getString()或getObject(),但它们是最终的,我们无法覆盖它。 ResourceBundle的两个方法都在调用handleGetObject(),但是,将上述逻辑添加到此方法不会改变Jasper报告的行为。
任何人都知道Jasper将调用哪种方法来获取本地化文本?谢谢!