当前位置: 首页 > 知识库问答 >
问题:

JasperReports:Struts插件将Map作为参数传递

闾丘德宇
2023-03-14

这是我在这里的第一个问题!

我试图将一个Map作为参数从struts动作传递给一个报告。我已经在reportParameters映射中插入了映射,该映射将被传递给jrxml文件。

我的问题是这个Map是否可以在jrxml文件中检索。

更准确地说,我声明如下:

<parameter name="reportParams.testMap" class="java.util.Map"/>

我想这样使用它:

<textField>
    <reportElement style="StyleData" x="240" y="0" width="100" height="23"/>
    <textElement textAlignment="Left" verticalAlignment="Top"/>
    <textFieldExpression><![CDATA[testMap.get("AR")]]></textFieldExpression>
</textField>

这可能吗?因为我在应用程序服务器日志中不断收到此错误:

No such property: testMap for class: Blank32A4_1336385977531_38171
Error evaluating expression : Source text : testMap.get("AR")
Error evaluating expression : Source text : testMap.get("AR")

我的动作类如下:

@Injectable
@Results({
@Result(name = "success", type = "jasper", params={"location",
    "report.jasper",
    "connection", "statsConnection",
    "dataSource", "translations",
    "reportParameters","reportParams",
    "format","PDF"})
})
public class LocalMapStatisticNewAction extends ActionSupport{

    ...

    public String execute() {
            reportParams = new Hashtable<String, Object>();
            testMap = new Hashtable<String, String>();
            testMap.put("AR", "Argentina");
            testMap.put("ES", "Spain");
            reportParams.put("testMap", testMap);

            //Jasper code here
    }

    ...

    public Map<String, Object> getReportParams() {
        return reportParams;
    }
}

任何提示都会有帮助!

共有1个答案

缪成天
2023-03-14

看起来就像用错误的名称引用参数一样简单。

testMap.get("AR")

您没有名为< code>testMap的参数。您有一个名为< code > report params . test map 的参数。此外,您需要参考如下参数:

$P{testMap}.get("AR")

重命名参数或重命名对该参数的引用,您应该是OK的。

 类似资料:
  • 代码如下(为简洁起见摘录): 颜色h: 颜色cpp: 我得到以下错误: 颜色cpp:16:29:错误:传递“const std::map” 错误指的是“返回颜色[cColortype];”在getColorText中。 我写这篇文章是为了一个类项目,我可以通过删除getColorText签名中的const声明来让它工作,但我正在尝试学习/采用良好的实践,并遵循建议,在不修改数据的成员函数中使用co

  • 我有一个抽象基类,它有以下私有变量 我希望其他所有扩展基类的类都实现以下方法 我的问题是,除了Map之外,我不能为实现选择任何其他类型 如果我不能控制选项映射的类型,但我想让initOptions方法的实现类知道映射中的键是String类型,值可以是任何对象,那么处理这种情况的正确方法是什么。

  • 问题内容: 如何在不执行“父”函数或不使用函数的情况下将函数作为参数传递?(因为我已经读到它是不安全的。) 我有这个: 它可以工作,但是问题是在调用函数时触发,而不是在函数中使用时触发。 根据我所读的内容,我可以使用来解决它,但这不是最佳实践。如何在JavaScript中将函数作为参数传递? 问题答案: 您只需要删除括号: 然后,这将传递函数而不先执行它。 这是一个例子:

  • 问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。

  • 问题内容: 我有3类调用,和。 在我的课程中,我想要一个这样的方法: 因此,例如,我想: 如何将类名作为参数,并基于该类名从类名创建适当的对象? 问题答案: 使用反射是可能的。这里是给定的className(作为字符串传递)。此类将在内存中搜索(应该已经加载)。 作为字符串传递时要实例化的类的名称应 完全限定

  • 我有一个简单的方法,我想把片段名作为参数传递。我几乎没有像这样的碎片 1) AddNewDatesFragment 2) AskFragment 3)免责声明片段 我有下面的代码可以正常工作 我想在方法中编写一些代码,在这里我可以调用这样的方法 等 我曾经尝试过这样的代码,但在if条件下不工作会导致编译时错误。 我对实施这种方法感到好奇。谢谢