小编Ima*_*man的帖子

在jaspersoft studio中使用多个数据源

根据向Jaspersoft Studio添加自定义数据源,能够将java bean中的自定义数据源添加到报表之后,我将使用jasper进入报表的第二点.

我有一个主报告,它使用数据库作为其数据源.然后我将一个bean.xml数据源添加到报表中,并将一个表添加到主报表中,该报表使用此bean.xml数据源来获取java bean.

我的目标是从主报表中获取字段值并操纵其值,然后用这些值填充bean,最后用bean填充表.

为此,我编写了3个类,我在表数据集中用作Scriptlet:

这是我需要做的事情的说明: 在此输入图像描述

问题出在FillTable类中,当我说我String kNFormelGG = (String) this.getParameterValue("gg");创建的bean.xml与测试连接失败时java.lang.reflect.InvocationTargetException

Caused by: java.lang.NullPointerException
at net.sf.jasperreports.engine.JRAbstractScriptlet.getParameterValue(JRAbstractScriptlet.java:95)
at net.sf.jasperreports.engine.JRAbstractScriptlet.getParameterValue(JRAbstractScriptlet.java:86)
at org.iqtig.reporting.dataSource.bean.dataSourceXML.FillTable.fillTable(FillTable.java:45)
at org.iqtig.reporting.dataSource.bean.dataSourceXML.JRDataSourceFactory.createCollection(JRDataSourceFactory.java:27)
... 34 more
Run Code Online (Sandbox Code Playgroud)

如果我分配一个修复值,如String kNFormelGG ="Test me"bean连接遇到没有错误,并在将bean.xml指定为Dataset1中的默认数据适配器的值后,它将使用静态值填充表.如何从主报表数据源动态获取参数或值中的数据并在bean中使用它?我有这样的假设:在从我的适配器调用静态工厂类时,字段仍然是空的.也许我错了,但我没有找到任何其他声明来解决这个问题.

BeanFactory类

import java.util.Collection;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;

/**
 * Factory for TableCellsBean Klasse
 *
 * @author iman.gharib
 */

public class JRDataSourceFactory extends JRDefaultScriptlet {

/**
 * @return collection der TableCellsBean Objekten
 * @throws JRScriptletException
 */
public …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports jaspersoft-studio

17
推荐指数
1
解决办法
3055
查看次数

jaxb2-maven-plugin Jakarta 和 java 11

我正在尝试迁移到 java 11 和 jakarta。我需要像在 Java EE 中那样从 XSD 文件创建 java 类。我已将所有 jaxb 导入更改为 jakarta。但我无法使 jaxb2 使用 jakarta namspace 而不是 jaxb 创建类。\n如果我没有向插件部分添加任何依赖项,那么该类将使用 javax namspace 创建,我不需要它,并且无论如何都找不到导入Java 错误:package javax.xml.bind.annotation does not exist.\n生成的类是:

\n
package org.ttt.raw.reporting.core.fussnote;\nimport javax.xml.bind.annotation.XmlAccessType; // I need to have jakarta.xml.bind ... here!\nimport javax.xml.bind.annotation.XmlAccessorType;\nimport javax.xml.bind.annotation.XmlElement;\nimport javax.xml.bind.annotation.XmlType;\n/**\n\n    Java-Klasse f\xc3\xbcr FussnoteType complex type.\n\n    Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.\n\n    <complexType name="FussnoteType">\n    <complexContent>\n\n    &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;\n\n      &lt;sequence&gt;\n\n        &lt;element name="FussnoteNummer" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;\n\n        &lt;element name="FussnoteText" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;\n\n      &lt;/sequence&gt;\n\n    &lt;/restriction&gt;\n\n …
Run Code Online (Sandbox Code Playgroud)

java xjc jakarta-ee

13
推荐指数
1
解决办法
2万
查看次数

将自定义数据源添加到Jaspersoft Studio

我试图通过传递自定义数据源来填充表.我创建了一个包含表格的简单报告.报告它自己从ms sql数据库获取数据.我编写了一个类似于本例中的类的java类.但我在桌上没有任何价值.在该示例中没有scriptlet.我检查了(String) this.getFieldValue("KN_FormelGG"); 代码行.它从字段中获取数据并可以在报告中显示.所以我猜bean数据源没有填充.我在a中调用了填充表方法afterGroupInit.如何在jasper中使用java中的数据集合?我也尝试在数据集和查询对话框中添加java bean ,但它也没有帮助我.我应该将scriptlet添加到子报表/表吗?我的问题的主要重点是在scriptlet中具有自定义数据源.我解决另一个问题,但我仍然没有得到答案.我添加$P{FieldDataSource}.getData()了检查数据,但它提供了null.

java class 1:

package testProjektIman.scriptlets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class FillTable extends JRDefaultScriptlet {

    @Override
public void afterGroupInit(final String id)
        throws JRScriptletException {
    fillTable();
}
public ArrayList<String> splitGGArray(final String kNFormelGG) {
    ArrayList<String> fieldNames = new ArrayList<>();
    String[] array = (kNFormelGG.split(" "));
    for (String sub : array) {
        fieldNames.add(sub);
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports javabeans jaspersoft-studio

10
推荐指数
1
解决办法
3206
查看次数

在 JavaFx 中的条下定位 xAxis 值

正如您在照片中看到的那样,我正在创建一个条形图。问题是栏的名称XAxis有些与栏不匹配。在 fxml 中刻度标签旋转设置为 -45。我怎样才能将它们准确地移动到横杆下方? 酒吧

public class MostComputerizedController {
@FXML
private BarChart<String, Number> barChart;
@FXML
private CategoryAxis orgNameAxis;
@FXML
private NumberAxis yAxis;
@FXML
private Label itsfField;

private ObservableList<String> orgNames = FXCollections
        .observableArrayList();
private DataConstructor dc = new DataConstructor();
private int numberOfOrganizations;
private List<Double> sumOfOrgsITSF = new ArrayList<Double>();

/**
 * sets the name of x axis, with the name of organizations
 */
@FXML
private void initialize() {
    dc.findSortedAssignedOrg();
    dc.orgFuncFuncType();
    orgNames.addAll(dc.getOrgFuncFunctype().keySet());
    orgNameAxis.setCategories(orgNames);

    orgNameAxis.setLabel("Name of Organizations");
    orgNameAxis.tickLabelFontProperty().set(Font.font(9));
    yAxis.setLabel("Saturation");
    numberOfOrganizations = dc.getSortedAssignedOrg().size();

} …
Run Code Online (Sandbox Code Playgroud)

javafx bar-chart

5
推荐指数
1
解决办法
1187
查看次数

在Javafx中为treetableview的列标题设置Tooltip

我有动态树表。如何设置列标题的工具提示,显示标题文本。下面的代码显示特定单元格的工具提示,但我不知道在哪里设置它的标题文本。

    for (Entry<String, String> ent : dc.getSortedAssignedOrg().entrySet()) {

        TreeTableColumn<String, ArrayList<String>> col = new TreeTableColumn<>(
                ent.getValue());
col.setCellFactory(new Callback<TreeTableColumn<String, ArrayList<String>>, TreeTableCell<String, ArrayList<String>>>() {
            @Override
            public TreeTableCell<String, ArrayList<String>> call(
                    TreeTableColumn<String, ArrayList<String>> param) {
                return new TreeTableCell<String, ArrayList<String>>() {
                    public void updateItem(ArrayList<String> item,
                            boolean empty) {
                        super.updateItem(item, empty);


                        if (item == null || empty) {
                            setStyle("");
                            setText("");
                        } else if (item.contains("Green")) {
                            float weightInt = Float.parseFloat(item.get(0));
                            float res = weightInt * 1;
                            String resString = Float.toString(res);
                            this.setStyle("-fx-background-color:green");
                            setTooltip(new Tooltip(item.get(2)));
                            setText(resString);
                        } else if (item.contains("yellow")) …
Run Code Online (Sandbox Code Playgroud)

javafx tooltip columnheader

0
推荐指数
1
解决办法
1126
查看次数