Параметры в полях DynamicJasper AutoText?

Учитывая отчет с параметром, скажем, foo со значением bar, я ожидаю, что следующее напечатает либо bar, если он поддерживает параметры, либо $P{foo}, если он поддерживает только статический текст.

    AutoText showBatchAutoText = new AutoText("$P{foo}",
                                 AutoText.POSITION_HEADER,
                                 HorizontalBandAlignment.CENTER);

Вместо этого он печатает ((java.lang.String)parameter_foo.getValue()), подразумевая, что он выполняет какую-то логику в поле...

Это должно работать? Я неправильно использую автотекст типа «сообщение»?


person inanutshellus    schedule 23.06.2014    source источник


Ответы (1)


DynamicJasper заключает строку в кавычки перед отправкой в ​​Jasper. Таким образом, в стиле атака с внедрением SQL вы можете обойти ее с помощью экранированных кавычек.

AutoText showBatchAutoText = new AutoText("\" + $P{foo} + \"",
                             AutoText.POSITION_HEADER,
                             HorizontalBandAlignment.CENTER);

Хак, но... он помогает.

person inanutshellus    schedule 24.06.2014