2011-11-23 137 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