当前位置: 首页 > 面试题库 >

如何获得复杂的JavaBean的价值

齐胜涝
2023-03-14
问题内容

我有一个 .jrxml 文件,我想将一些参数从代码传递给它。我有一个Orde具有像场R舱double priceint quantityProduct product。情况很简单,当我需要传递价格或数量时,我只是这样做:

<textFieldExpression class = "java.lang.Integer">
   <![CDATA[$F{quantity}]]>
</textFieldExpression>

我尝试通过时出现问题product.getName()。我尝试了类似的东西:

<textFieldExpression class = "java.lang.String">
   <![CDATA[$F{product}.getName()]]>
</textFieldExpression>

和许多其他问题,但我不断出错: net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. Field not found : product

您有解决该问题的想法吗?


问题答案:

例如,您有一对JavaBean(POJO):

public class Order {

    private double price;
    private int quantity;
    private Product product;
    // public getters 
}

public class Product {

    private String name;
    // public getters 
}

并且您以这种方式声明报告的数据源:(是的,我喜欢 Guava

JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(Lists.newArrayList(ImmutableList.<Order>builder()
        .add(new Order(1000.2, 10, new Product("Phone")))
        .add(new Order(10200.0, 2, new Product("Tv")))
        .build()));

如果使用此字段声明:

<field name="order" class="java.lang.Object">
    <fieldDescription><![CDATA[_THIS]]></fieldDescription>
</field>
<field name="price" class="java.lang.Double"/>
<field name="quantity" class="java.lang.Integer"/>
<field name="productName" class="java.lang.String">
    <fieldDescription><![CDATA[product.name]]></fieldDescription>
</field>

您可以使用以下表达式:

<textField>
    <reportElement x="0" y="0" width="100" height="30"/>
    <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
</textField>
<textField>
    <reportElement x="100" y="0" width="100" height="30"/>
    <textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression>
</textField>
<textField>
    <reportElement x="200" y="0" width="100" height="30"/>
    <textFieldExpression><![CDATA[$F{productName}]]></textFieldExpression>
</textField>

注意:

  • 不要忘记吸气剂应该是公开的
  • 更多信息:JavaBean数据源


 类似资料:
  • 我有一个.jrxml文件,我想将代码中的一些参数传递给它。我有一个<code>Orde</code>r类,它具有<code>双倍价格</code<、<code>int quantity</code〕和<code>Product Product</code’等字段。情况很简单,当我需要传递价格或数量时,我只需要这样做: 当我尝试传递 时出现问题。我尝试了类似的东西: 还有许多其他的,但我一直得到错误

  • 问题内容: 我正在从Angular的文档中查看此示例,但是我认为这可能总体上适用于Promise。下面的示例是从文档中逐字复制的,并附有评论: 我不清楚这是如何工作的。如果我可以调用第一个的结果并将它们链接起来(据我所知),那么它就是一个类型为Promise的对象。这不是一个。那么,“它的值将是promiseA的结果增加1”的含义是什么? 我应该以这种方式访问吗?成功回调如何返回承诺并返回“结果+

  • 问题内容: 我正在使用php中的分页进行搜索功能,下面是我的代码,但是每当我单击下一个链接时,搜索查询都不会采用通过POST传递的变量。你能帮我么.. 问题答案: 您的代码中有几个问题。 第一的: 您使用的变量不正确。您有,但您应该使用与变量相同的方式,如下所示: 第二: 您正在解释“发布”的概念,并错误地单击了链接。您需要使用下一个和上一个按钮进行的​​操作是一个隐藏的表单,其中包含您需要的所有

  • 问题内容: 当我调试此代码时,在databaseUser中dataSnapshot在数据库中具有User的值,但是在object中,未添加,则全部为null。而且我不明白,因为在对象事件中正常接收值。 我的数据库用户,目前仅用于测试: 和方法,只是选择另一个活动的事件的关键: 问题答案: 当您对Firebase数据库执行查询时,可能会有多个结果。通过附加a,您可以在一个快照中获得这些结果,因此快照

  • 问题内容: 我想从一组单选按钮中获取选定的值。 这是我的HTML: 这是我的.js: 我一直不确定。 问题答案: rates元素是,因此它没有值。这可能是来自哪里。 该属性将告诉您是否选择了元素:

  • 问题内容: 我保证会绑定到我的UI中。当承诺解决并且UI元素呈现后,我可以单击该UI元素。在我处理点击的控制器代码中,我要根据诺言的价值行事。至此,在我的角度代码中,我已经知道诺言已经解决了..但是当我想要获得价值时,它仍然是诺言。 鉴于我知道必须兑现承诺,获得承诺价值的最佳方法是什么? 问题答案: 承诺永远是诺言- 那就应该如此。尽管可以将诺言直接绑定到视图,但我通常不鼓励这种做法,因为它缺乏透