Size: a a a

Spring Framework and more

2019 June 17

EA

Evgeny Ageev in Spring Framework and more
Привет. При верстке сложного отчета пришлось все разбить на субрепорты.
Есть пара вопросов:
1. Как добиться того, чтобы они выводились последовательно ? (сейчас друг друга перекрывают, 2й почему-то напечатался на 1й странице, на 2й стр - все остальные)
Судя по тому, что написано в The Jasper Reports Ultimate Guide, стр 166 - для каждого субрепорта создается отдельный Thread (Subreport Runners). Тогда такое поведение понятно. А как его отключить?
2. Как правильно передавать датасорсы в субрепорт? Нашел в проекте такой пример (в шаблоне):
((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")
Примеров кода нет. Я должен в мапу параметров добавить "accounts", где будет скажем List<AccountDto> ?
3. В 5 из 7 субрепортов отдельный датасорс не нужен, а нужно получать реквизиты основного отчета. Что для этого нужно? Скажем, id и name нужно на разных страницах печатать в разных блоках.
#jasperreports #jasper #reports #spring #java
источник

G

Grigori in Spring Framework and more
п.2. - Верно.
источник

G

Grigori in Spring Framework and more
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
источник

EA

Evgeny Ageev in Spring Framework and more
Grigori
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
Да, это в отчете. А в коде какие изменения нужны для этого? В этом и вопрос.
У меня вот этот код формирует пар-ры для передачи в отчет:
Map<String, Object> map = objectMapper.convertValue(paramSettingDto, Map.class);
renderParameters.setDataModel(singletonList(map));
renderParameters.setFormat(format.getExtension());
renderParameters.setTemplateId(PARAM_SETTING_TEMPLATE_NAME);
renderParameters.setZip(false);
источник

EA

Evgeny Ageev in Spring Framework and more
Правда я догадываюсь, что добавление в эту мапу new HashMap(<AccountsDto>) либо List, либо Set с ними решит эту проблему.
источник

G

Grigori in Spring Framework and more
Evgeny Ageev
Правда я догадываюсь, что добавление в эту мапу new HashMap(<AccountsDto>) либо List, либо Set с ними решит эту проблему.
код мне непонятен, но да, надо во входящие данные положить, например, коллекцию которая станет датасорсом для сабрепорта.
Или вытащить эту коллекцию из структуры данных которую вы скармливаете репорту
CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("dto.user.accounts")]
источник

EA

Evgeny Ageev in Spring Framework and more
Ладно. Самое интересное - 1 - как добиться последовательного вывода?
источник

G

Grigori in Spring Framework and more
с сабрепортами не скажу, я ими никогда не пользовался, только вложенные таблицы
источник

EP

EnterpriseJira PluginDev in Spring Framework and more
как заинжектить класс - константу в спринговскую конфигурацию?

У меня сейчас 2 класса конфигурации, логика геттеров повторяется и там и там - обращение к константам того же класса , различаются только значения констант
источник

EP

EnterpriseJira PluginDev in Spring Framework and more
вангую нарушение DRY
источник
2019 June 18

Ar

Arseny -> r2d2 in Spring Framework and more
EnterpriseJira PluginDev
как заинжектить класс - константу в спринговскую конфигурацию?

У меня сейчас 2 класса конфигурации, логика геттеров повторяется и там и там - обращение к константам того же класса , различаются только значения констант
Вынос констант в проперти и профилирование, но зависит от того для чего нужен конфиг и как используется
источник

EP

EnterpriseJira PluginDev in Spring Framework and more
senior java developer не помнит, какие задания он мне давал
источник

FM

Frosty Master in Spring Framework and more
EnterpriseJira PluginDev
senior java developer не помнит, какие задания он мне давал
Груздь(
источник

Ar

Arseny -> r2d2 in Spring Framework and more
EnterpriseJira PluginDev
senior java developer не помнит, какие задания он мне давал
Мой пм забывает что за задачу он очень ждет :/
источник

AY

Alexander Yakovlev in Spring Framework and more
что то не пойму, как заставить jackson разруливать ситуацию, при принятии объекта в контролере в RequestBody, чтоб он понимал, что поле это ид вложенной сущности
{
"id":1,
"name":"test",
"info": 3
}

info это вложенная сущность(расширение) с id  = 3
из коробки он только может хавать
{
"id":1,
"name":"test",
"info": {
   "id": 3
}
}
источник

AY

Alexander Yakovlev in Spring Framework and more
не видит, из-за  "info": 3, если передать его как объект - "info": { "id": 3}, то все норм
На info соответственно @JsonIdentityReference  @JsonIdentityInfo навесил
источник

BU

Bekdaulet Ushkempirov in Spring Framework and more
есть кто понимать ffmpeg на джава?
источник

DY

Dmitriy Yakovlev in Spring Framework and more
а что там понимать надо? я много лет через processbuilder запускаю и бед не знаю
источник

DY

Dmitriy Yakovlev in Spring Framework and more
Alexander Yakovlev
что то не пойму, как заставить jackson разруливать ситуацию, при принятии объекта в контролере в RequestBody, чтоб он понимал, что поле это ид вложенной сущности
{
"id":1,
"name":"test",
"info": 3
}

info это вложенная сущность(расширение) с id  = 3
из коробки он только может хавать
{
"id":1,
"name":"test",
"info": {
   "id": 3
}
}
если у тебя Info это какой-то класс, не int или Integer, то используй кастомный десериалайзер @JsonDeserialize(using = CustomSerializer.class)
источник

AY

Alexander Yakovlev in Spring Framework and more
Dmitriy Yakovlev
если у тебя Info это какой-то класс, не int или Integer, то используй кастомный десериалайзер @JsonDeserialize(using = CustomSerializer.class)
Ну т.е. я правильно понимаю, что это не десерилизация @JsonIdentityReference  @JsonIdentityInfo, а только стерилизация
источник