В настоящее время я работаю над индивидуальным поведением того, как 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 — это конкретное значение, если оно не определено, пакет вернет текст, связанный с SOME_KEY (значение по умолчанию).
Я пытался переопределить getString() или getObject(), но они являются окончательными, и мы не можем их переопределить. Оба метода ResourceBundle вызывают handleGetObject(), однако добавление вышеуказанной логики к этим методам не меняет поведение отчета Jasper.
Кто-нибудь знает, какой метод Джаспер будет вызывать для получения локализованного текста? Спасибо!
SOME_KEY_A
переводомSOME_KEY
? По сути, если перевода нет, вы хотите использовать значение по умолчанию? Если да, то ResourceBundle уже работает таким образом. - person Jacob Schoen   schedule 19.11.2012