2017-02-18 93 views
0

你好我有問題顯示這種格式的字符串日期"01-Nov-16"作爲"01-11-2016"null是什麼返回。我嘗試了我所知道的一切。以下是我的確切的XML。變量的值顯示爲空而不是格式化日期

<variable name="S_DATE" class="java.util.Date"> 
    <variableExpression><![CDATA[new java.text.SimpleDateFormat("dd-MMM-yy",java.util.Locale.US).parse($P{startdate})]]></variableExpression> 
</variable> 

<textField isStretchWithOverflow="true" pattern="dd-MM-yyyy" isBlankWhenNull="false"> 
    <reportElement stretchType="RelativeToTallestObject" x="205" y="0" width="102" height="20" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true" forecolor="#000000" uuid="560349d8-0bb8-44f0-90ce-41ffb71544cc"/> 
    <textElement textAlignment="Left"> 
     <font size="10"/> 
    </textElement> 
    <textFieldExpression><![CDATA[$V{S_DATE}]]></textFieldExpression> 
</textField> 

類型startdate參數的是String

+0

@Winnie什麼是'$ P {startdate}'的類型?你檢查了什麼值? –

+0

@AlexK它是一個字符串,例如。 「01 - 11月-16」 – Winnie

回答

0

第一種方法

嘗試使用參數,而不是可變的。在這種情況下,不需要使用變量的「權力」和特徵。

樣品

<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="Format date" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
    <parameter name="dateAsString" class="java.lang.String"> 
     <defaultValueExpression><![CDATA["01-Nov-2016"]]></defaultValueExpression> 
    </parameter> 
    <parameter name="dateParam" class="java.util.Date"> 
     <defaultValueExpression><![CDATA[new SimpleDateFormat("dd-MMM-yy", Locale.US).parse($P{dateAsString})]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="79" splitType="Stretch"> 
      <textField pattern="dd-MM-yyyy"> 
       <reportElement x="130" y="20" width="250" height="30"/> 
       <textFieldExpression><![CDATA[$P{dateParam}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

輸出結果

的JasperSoft工作室結果將是:

enter image description here

第二條本辦法

更改resetType的變量。您的案件的有效類型將爲。正確的表達式是:

<variable name="S_DATE" class="java.util.Date" resetType="None"> 
    <variableExpression><![CDATA[new SimpleDateFormat("dd-MMM-yy", Locale.US).parse($P{startdate})]]></variableExpression> 
</variable>