在jasper报告中显示输入参数?

时间:2014-04-09 13:53:14

标签: parameters jasper-reports

在我的jasper报告中,我有一个名为first name,last name的过滤器输入参数。使用ireport,如果最终用户输入名字或姓氏,我如何在报告中显示这些参数。

在我的报告中,我想显示以下使用参数。

过滤条件:名字-John            姓氏 - 保罗

如果没有输入这些参数,则不会显示任何参数。

我希望你们能在这里帮助我。

2 个答案:

答案 0 :(得分:0)

我开发此功能的一种方法是读取.jasper文件(编译报告)中指定的参数。这样做的代码是:

        JasperReport template = null;

    try {
        template = (JasperReport)JRLoader.loadObject(fs);
        _logger.fine(putUsernameInsideLogger()+"JasperReport file " + template);

    } catch (JRException e) {
        _logger.severe(putUsernameInsideLogger()+"Error during object loading (.jasper file loading) inside insert() method - ReportBean ",e);
    }


    JRParameter[] params = template.getParameters();

    int counter = 1;
            for(JRParameter param : params) {
                System.out.println("PARAMETER nr "+counter++);
              if(!param.isSystemDefined() && param.isForPrompting()){
                  System.out.println("Name: "+param.getName()+ " ,\\nDesc: "+param.getDescription()+" ,\\nDefaultValueExpr: "+param.getDefaultValueExpression()+" ,\\nNestedTypeName: "+param.getNestedTypeName()+ " ,\\nValueClassName: "+param.getValueClassName()+" , \\nNestedType: "+param.getNestedType());

                  if (param.getValueClassName().equalsIgnoreCase("java.lang.String")){
                  //expose a ui component bind }
                  if (param.getValueClassName().equalsIgnoreCase("java.util.Date")){
                   //same as above}     
                  if (param.getValueClassName().equalsIgnoreCase("java.lang.Integer")){
                   //my example
                  RichInputNumberSpinbox ui = new RichInputNumberSpinbox();
                                  ui.setId("rit"+counter);
                                  ui.setLabel(param.getName());
                                  reportFieldsGroupLayout.getChildren().add(ui);}
              }

            }

通过这种方式,您将能够获取报告中指定的参数,并创建暴露给用户界面的UI组件。之后,请记住在报告生成时读取插入到这些组件的值,并将它们插入Map并将其传递给导出器:

Map parameters = new HashMap();
        parameters.put("title", uiComponent.getValue()); //get the value from your ui component
        JasperPrint print = null;
            print = JasperFillManager.fillReport(template, parameters, conn);

答案 1 :(得分:-1)

要在报告中显示参数值,只需拖动“文本归档”并仅指定参数。

如果您希望默认显示“全部”而不选择任何参数,则可以使用此条件。

     $P{p_firstname} == null? " All " :
   (
     $P{p_firstname}.isEmpty() ? " All ":
     $P{p_firstname}
   )