2011-11-23 138 views

回答

1

您可以使用此表達式:

<parameter name="url" class="java.lang.String" isForPrompting="false"> 
    <defaultValueExpression><![CDATA["http://www.something.com/file.exe"]]></defaultValueExpression> 
</parameter> 

<textField> 
    <reportElement x="122" y="28" width="100" height="20"/> 
    <textElement/> 
    <textFieldExpression> 
     <![CDATA[$P{url}.contains("/") ? $P{url}.split("/")[$P{url}.split("/").length-1] : $P{url}]]></textFieldExpression> 
</textField> 

結果將是:

的file.exe

而對於url = "just_file_wout_url.txt"結果將是:

just_file_wout_url.txt

對於您的情況下,表現將是:

$F{fupgrade_package_name}.contains("/") ? $F{fupgrade_package_name}.split("/")[$F{fupgrade_package_name}.split("/").length-1] : $F{fupgrade_package_name} 
+0

但在您的答案中,「url」必須是一個字段,它是來自查詢的每行數據。它不一定是一個參數嗎? – reza

+0

@reza它沒關係 - 它只是一個樣本。您可以將其更改爲字段 - 「$ F {url}」。但表達式是正確的 –

+0

對於你的情況,表達式將是:'$ F {fupgrade_package_name} .contains(「/」)? $ F {fupgrade_package_name} .split(「/」)[$ F {fupgrade_package_name} .split(「/」)。length-1]:$ F {fupgrade_package_name}' –

0

可以處理$F{fupgrade_package_name}.split(regex)[0]像一個字符串,你可以使用正則表達式。

+0

你能否詳細說明嗎? – reza