Java Jasperreports图表:计算源文本的表达式时出错:$F{answers}

Java Jasperreports图表:计算源文本的表达式时出错:$F{answers},java,charts,jasper-reports,Java,Charts,Jasper Reports,我正在使用Jaspersoft Studio 6.2。要从类列表打印图表并获取此错误: Error evaluating expression for source text: $F{answers} 这是表示图表数据的类: public class GraphicP {// Gráfico de tipo PERSONAL String area; String question; String[] options; String[] answers;

我正在使用Jaspersoft Studio 6.2。要从类列表打印图表并获取此错误:

Error evaluating expression for source text: $F{answers}
这是表示图表数据的类:

public class GraphicP {// Gráfico de tipo PERSONAL
    String area;
    String question;
    String[] options;
    String[] answers;
    Float[] score; // size: options.size X answers.size
    ...
    (getters and setters)
    ...
}
这是一个仅包含一个GraphicP的列表的简单示例:

List<GraphicP> listGraphics = new ArrayList<>();

    GraphicP g = new GraphicP();
    g.setArea(new String("Area"));
    g.setQuestion(new String("pregunta"));
    String[] options = new String[4];
    options[0] = new String("A");
    options[1] = new String("B");
    options[2] = new String("C");
    options[3] = new String("D");
    g.setOptions(options);

    String[] answers = new String[4];
    answers[0] = new String("a1");
    answers[1] = new String("a2");
    answers[2] = new String("a3");
    answers[3] = new String("a4");
    g.setAnswers(answers);

    Float[] scores = new Float[4];
    scores[0] = new Float(10);
    scores[1] = new Float(20);
    scores[2] = new Float(30);
    scores[3] = new Float(40);
    g.setScore(scores);

    listGraphics.add(g);
List listGraphics=new ArrayList();
GraphicP g=新的GraphicP();
g、 设置区域(新字符串(“区域”));
g、 设置问题(新字符串(“pregunta”);
字符串[]选项=新字符串[4];
选项[0]=新字符串(“A”);
选项[1]=新字符串(“B”);
选项[2]=新字符串(“C”);
选项[3]=新字符串(“D”);
g、 设置选项(选项);
字符串[]答案=新字符串[4];
答案[0]=新字符串(“a1”);
答案[1]=新字符串(“a2”);
答案[2]=新字符串(“a3”);
答案[3]=新字符串(“a4”);
g、 设定答案(答案);
浮动[]分数=新浮动[4];
分数[0]=新浮动(10);
分数[1]=新浮动(20);
分数[2]=新浮动(30);
分数[3]=新浮动(40);
g、 核心(分数);
添加(g);
在此代码中,将显示报告地图上的数据加载:

private void loadData(Map<String, Object> paramsMap, List<GraphicP> listG) {

    for (GraphicP g : listG) {

        List<Map<String, ?>> lineChartData = new ArrayList<Map<String, ?>>();

        Map<String, Object> dataMap = new HashMap<String, Object>();
        dataMap.put("area", g.getArea());
        dataMap.put("question", g.getQuestion());
        dataMap.put("options", g.getOptions());
        dataMap.put("answers", g.getAnswers());
        dataMap.put("score", g.getScore());

        lineChartData.add(dataMap);

        JRMapCollectionDataSource datasource = new JRMapCollectionDataSource(lineChartData);
        paramsMap.put("datasource", datasource);

    }

}
private void loadData(映射参数映射,列表列表){
for(graphicpg:listG){
List lineChartData=new ArrayList();
Map dataMap=newhashmap();
put(“area”,g.getArea());
put(“问题”,g.getQuestion());
put(“options”,g.getOptions());
put(“answers”,g.getAnswers());
put(“score”,g.getScore());
lineChartData.add(数据映射);
JRMapCollectionDataSource数据源=新的JRMapCollectionDataSource(lineChartData);
paramsMap.put(“数据源”,数据源);
}
}
这里是我的jrxml(代码末尾的图表):



提前感谢您抽出时间

答案不是java.lang.String,请尝试java.lang.String[],但它不能作为系列表达式使用,您需要重新思考您的数据源检查一下,您可以看到一些图表示例数据源,我将其更改为“java.lang.String[]”,并获得“java.lang.String;无法转换为java.lang.Compariable”正是因为它在序列表达式中,所以您需要重新考虑数据源(了解序列、类别和值表达式的工作原理),请参见上面的链接以获取示例
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2016-03-25T11:15:38 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="workingEnviromentReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="89d0dab9-3d92-4e67-a86f-647d6ca9a2fe">
      <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
      <template><![CDATA["styleTemplate.jrtx"]]></template>
      <subDataset name="Dataset - Graphic" uuid="76111e37-0e31-48b1-946e-f28826341cc7">
            <queryString><![CDATA[]]></queryString>
            <field name="options" class="java.lang.String"/>
            <field name="answers" class="java.lang.String">
            <fieldDescription><![CDATA[]]></fieldDescription></field>
            <field name="scores" class="java.lang.Float">
                  <fieldDescription><![CDATA[]]></fieldDescription>
            </field>
      </subDataset>
<subDataset name="Dataset - GraphicQ" uuid="47826e0e-f281-4ec1-a750-1eb80642aa70">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="answers" class="java.lang.String">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="scores" class="java.lang.Float">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
</subDataset>
<parameter name="datasource" class="net.sf.jasperreports.engine.data.JRMapCollectionDataSource"/>
<queryString>
    <![CDATA[]]>
</queryString>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band splitType="Stretch">
        <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
    </band>
</title>
<pageHeader>
    <band height="100" splitType="Stretch">
        <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
    </band>
</pageHeader>
<columnHeader>
    <band height="151" splitType="Stretch"/>
</columnHeader>
<detail>
    <band height="75" splitType="Stretch"/>
</detail>
<columnFooter>
    <band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
    <band height="298" splitType="Stretch">
        <barChart>
            <chart evaluationTime="Report">
                <reportElement x="53" y="45" width="427" height="200" uuid="1df4a571-d29d-4621-874b-f8f70bffd81f"/>
                <chartTitle/>
                <chartSubtitle/>
                <chartLegend/>
            </chart>
            <categoryDataset>
                <dataset>
                    <datasetRun subDataset="Dataset - Graphic" uuid="ec923e15-0b52-48bd-9cc7-3ee7912ea3a7">
                        <dataSourceExpression><![CDATA[$P{datasource}]]></dataSourceExpression>
                    </datasetRun>
                </dataset>
                <categorySeries>
                    <seriesExpression><![CDATA[$F{answers}]]></seriesExpression>
                    <categoryExpression><![CDATA[$F{options}]]></categoryExpression>
                    <valueExpression><![CDATA[$F{scores}]]></valueExpression>
                </categorySeries>
            </categoryDataset>
            <barPlot>
                <plot/>
                <itemLabel/>
                <categoryAxisFormat>
                    <axisFormat/>
                </categoryAxisFormat>
                <valueAxisFormat>
                    <axisFormat/>
                </valueAxisFormat>
            </barPlot>
        </barChart>
    </band>
</summary>
</jasperReport>