2017-09-07 2 views
0

Ich brauche Wert Parameter von JasperReports Bericht mit JRParameter.Wie bekomme ich den Wert des JasperReports-Parameters (JRParameter-Objekt) mit Java?

Mein Quellcode:

JRParameter[] params = jasperReport.getParameters(); 
Map<String, JRParameter> jrParameters = new HashMap<String, JRParameter>(); 

for(JRParameter param : params) { 
    if(!param.isSystemDefined() && param.isForPrompting()){ 
     System.out.println(" param name : " + param.getName()); 

     // test is the name parameter in jasper report 
     if (param.getName().trim().equals("text")) { 
      param.getDefaultValueExpression(); 
      jrParameters.put(param.getName(), param); 
     } 
    } 
} 
// the output not coming out. 
System.out.println(" return mapping : " + jrParameters.get("text")); 

Wie Wert von Parameter "text" abzurufen, tut jede mögliche Weise, die Werte von Parameter abzurufen?

+0

haben Sie versucht, dies mit dem Debugger ausgeführt wird und zu sehen, wenn sie die if-Anweisung eingibt? –

+0

Ja, es geht in If-Anweisung, ich benutze das Debuggen des Ergebnisses, Rückgabe-Mapping: [email protected], wie dieses Ergebnis in Werte Zeichenfolge konvertiert werden .. – fndong

+0

Wenn Sie Parameter auswerten möchten Standardausdrücke, werfen Sie einen Blick auf http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/fill/JRParameterDefaultValuesEvaluator.html – dada67

Antwort

1

Das Objekt JasperReport enthält das Array der Berichtsparameter.

Die JasperReport.getParameters() Methode gibt alle Parameter zurück: System (eingebaut) und die Parameter Ihres Berichts (definiert in der Vorlage).

Sie können nicht den Wert des Parameters erhalten, weil die keine ist jeder Wert bei Jasper Objekt. Es ist nur eine kompilierte Version der Berichtsvorlage. Sie können den Namen, den Standardausdruck, die Klasse des Parameters, die Beschreibung, die Eigenschaften und so weiter erhalten.

Sieht aus wie Sie Standardausdrücke von Parametern erhalten müssen.

Die Probe mit den Parametern der Arbeit bekam von Jasper Objekt

ich die einfache Vorlage verwendet:

<?xml version="1.0" encoding="UTF-8"?> 
<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="Test parameters" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <parameter name="stringParam" class="java.lang.String"> 
     <defaultValueExpression><![CDATA["string value"]]></defaultValueExpression> 
    </parameter> 
    <parameter name="intParam" class="java.lang.Integer"> 
     <defaultValueExpression><![CDATA[11]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="30"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="30"/> 
       <text><![CDATA[Title]]></text> 
      </staticText> 
     </band> 
    </title> 
</jasperReport> 

Der Bericht enthält zwei Parameter: der String und Integer Typen.

Die Java wird Code sein:

JasperReport jasperReport; 

try (InputStream inputStream = JRLoader.getResourceInputStream("report.jrxml")) { 
    jasperReport = JasperCompileManager.compileReport(JRXmlLoader.load(inputStream)); 
} 

List<String> paramsNames = Arrays.asList("stringParam", "intParam"); // we are going to show information about only this parameters 

JRParameter[] parameters = jasperReport.getParameters(); 
for (JRParameter parameter : Arrays.stream(parameters).filter(param -> paramsNames.contains(param.getName())).collect(Collectors.toList())) { 
    JRExpression expression = parameter.getDefaultValueExpression(); 
    if (expression != null) { 
     System.out.println(String.format("Parameter name: %s, class: %s, expression: %s", parameter.getName(), parameter.getValueClass().toString(), expression.getText())); // we are showing name, class and default expression of parameter 
    } 
} 

Der Ausgang wird sein:

Parameter name: stringParam, class: class java.lang.String, expression: "string value" 
Parameter name: intParam, class: class java.lang.Integer, expression: 11 
Verwandte Themen