Как Jasper извлекает значения из пакета ресурсов?

В настоящее время я работаю над индивидуальным поведением того, как 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.

Кто-нибудь знает, какой метод Джаспер будет вызывать для получения локализованного текста? Спасибо!


person NeoNosliw    schedule 19.11.2012    source источник
comment
Является ли SOME_KEY_A переводом SOME_KEY? По сути, если перевода нет, вы хотите использовать значение по умолчанию? Если да, то ResourceBundle уже работает таким образом.   -  person Jacob Schoen    schedule 19.11.2012
comment
нет, SOME_KEY_A не является переводом SOME_KEY. Возьмем пример: CURRENCY=USD CURRENCY_STORE1=JPY CURRENCY_STORE2=CAD Я хочу, чтобы Джаспер получал JPY, если я могу передать store1 в пакет ресурсов. если 2-й параметр равен нулю, будут возвращены доллары США.   -  person NeoNosliw    schedule 19.11.2012
comment
Хорошо, тогда я не думаю, что вам нужен ResourceBundle. Взгляните на Написание методов в отчете jasper? поскольку это, вероятно, ближе к тому, что вы хотеть.   -  person Jacob Schoen    schedule 20.11.2012