Я недавно начал на Spring Boot и новичок в Java Reporting. JasperReports был хорошим, но менее гибким для динамической отчетности, такой как динамическое количество столбцов и т. Д. Однако я застрял, когда дело дошло до реализации CondentalStyling , например, создание жирного шрифта в полной строке на основе значения определенного столбца. Вот определение проблемы: < /p>
Определение проблемы < /strong>
на основе значения в одном столбце я хочу изменить шрифт всей строки отчета. Столбец Rowtype. Я пытаюсь использовать условное выражение для выполнения задачи. Вот мой код. < /P>
ArrayList conditionalStyles = null;
try{
conditionalStyles = getConditionalStyles(detailStyle);
} catch(Exception e){
System.out.println("XXX-1");
e.printStackTrace();
}
private class FicheCondition extends ConditionStyleExpression implements CustomExpression {
private String fieldName;
private String colorValue;
public FicheCondition(String fieldName, String colorValue) {
System.out.println("XXXX-1-A");
this.fieldName = fieldName;
this.colorValue = colorValue;
System.out.println("XXXX-1-B: " + fieldName + "/" + colorValue);
}
public Object evaluate(Map fields, Map variables, Map parameters) {
System.out.println("XXXX-2-A");
System.out.println("Fields: " + fields);
boolean condition = false;
Object currentValue = fields.get(fieldName);
if (currentValue instanceof String) {
String s = (String) currentValue;
condition = colorValue.equals(s); // Fixed comparison
}
return condition;
}
public String getClassName() {
System.out.println("XXXX-3-A");
return Boolean.class.getName();
}
}
private ArrayList getConditionalStyles(Style baseStyle) throws IllegalAccessException, InstantiationException, InvocationTargetException,
NoSuchFieldException, NoSuchFieldError, NoSuchMethodException {
System.out.println("XXXX-0");
Style style0 = (Style) BeanUtils.cloneBean(baseStyle);
style0.setTextColor(Color.RED);
style0.setFont(Font.GEORGIA_MEDIUM_BOLD);
Style style1 = (Style) BeanUtils.cloneBean(baseStyle);
style1.setTextColor(new Color(128,128,0));
ArrayList conditionalStyles = new ArrayList();
// Create FicheCondition and wrap it in a ConditionalStyle
FicheCondition fc = new FicheCondition("rowType", "H");
ConditionalStyle cs = new ConditionalStyle(fc, style0); // Wrap in ConditionalStyle
conditionalStyles.add(cs); // Add the ConditionalStyle to the list
// Repeat for other conditions
fc = new FicheCondition("rowType", "GROUP");
cs = new ConditionalStyle(fc, style1); // Wrap in ConditionalStyle
conditionalStyles.add(cs); // Add the ConditionalStyle to the list
return conditionalStyles;
}
AbstractColumn cRowType = ColumnBuilder.getNew()
.setColumnProperty("rowType", String.class.getName())
.setTitle("RowType")
.addFieldProperty("rowType", String.class.getName())
.setFieldDescription("rowType")
.setWidth(50)
.addConditionalStyles(conditionalStyles)
.setStyle(detailStyle)
.build();
reportBuilder.addColumn(cRowType);
< /code>
Здесь againation () никогда не вызывается. И я не могу определить, почему.
после того, как потратил два дня по этому вопросу, я в конечном итоге в точке сдачи и поиска какого -то другого решения с открытым исходным кодом, хотя я не уверен, есть ли один из них.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ling-issue
Инструменты отчетности Java/Springboot с открытым исходным кодом - Проблема условного стиля [закрыто] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Инструменты и технологии для создания чат-ботов с открытым исходным кодом
Anonymous » » в форуме Python - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Бессмысловые хранилища с открытым исходным кодом в Springboot Applications
Anonymous » » в форуме JAVA - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-