Public domain, делайте с кодом что хотите, указание авторства не требуется
Модуль для JasperReports Server, позволяющий исполнять js-код из отчётов
- Скопировать файл
min/jr.js_loader.js
на сервер в папкуtomcat\webapps\jasperserver\optimized-scripts
- Создать в отчёте элемент, который может быть гиперссылкой, например, Text Field или Image
- Указать параметры ссылки:
Link Target
-Self
Link Type
-js_loader
- Внизу войти в редактор параметров и добавить параметр code со значением, например,
"alert('Hello, world!')"
. Обратите внимание - значения параметров вычисляются как java-выражения, то есть код нужно писать в двойных кавычках, в одну строку, и экранировать спецсимволы - Загрузить отчёт на сервер
- Теперь при нажатии на ссылку будет выполняться код из параметра code
- Можно добавить и больше параметров, они будут доступны из кода из объекта params, например так:
"alert(params.myparam)"
- 26.03.2020 Первая версия
Модуль для JasperReports Server, позволяющий копировать ссылку на текущий отчёт с заполненными параметрами
- Скопировать файл
min/jr.copy_link.js
на сервер в папкуtomcat\webapps\jasperserver\optimized-scripts
- Создать в отчёте элемент, который может быть гиперссылкой, например, Text Field или Image
- Указать параметры ссылки:
Link Target
-Self
Link Type
-copy_link
- Внизу войти в редактор параметров и добавить параметр parameters со значением:
((java.util.concurrent.Callable)(() -> {
Map<String, Object> map = $P{REPORT_PARAMETERS_MAP};
Map result = new HashMap<String, Object>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String s = entry.getKey();
// сюда можно написать названия параметров, которые надо проигнорировать
// if (s.matches("name1|name2|name3")) {
// continue;
// }
for (int i = 0; i < s.length(); ++i) {
char c = s.charAt(i);
if (!(java.lang.Character.isUpperCase(c) || c == '_')) {
result.put(entry.getKey(), entry.getValue());
}
}
}
return com.google.common.net.UrlEscapers.urlFragmentEscaper().escape(
(new org.json.JSONObject(result)).toString()
);
})).call()
Этот код передаст модулю все параметры, заданные пользователем, в виде json с экранированием спец-символов. Все стандартные джасперовские параметры записываются большими буквами, так что так мы можем отличить их от наших параметров и выкинуть из json. Если нужно выкинуть ещё какие-нибудь параметры, раскаментируйте блок if и впишите туда названия параметров через |
- Загрузить отчёт на сервер
- Теперь при нажатии на ссылку, в буфер обмена будет копироваться ссылка на текущий отчёт с текущими параметрами. Параметры, которые не заданы (т.е. равны null), или содержащие только пробелы, будут проигнорированы
- Опционально - можно добавить вывод сообщения "Ссылка скопирована!". Для этого в редакторе параметров добавьте параметр
doAlert
со значениемtrue
- 26.03.2020 Первая версия