Birt报告参数验证

时间:2014-09-24 07:25:49

标签: validation birt

NewParameter的类型为DATE,在参数窗口中的自定义格式为MM/dd/yyyy

我编写了以下代码来验证用户是否发送了正确的格式。如果用户发送24/12/2014,则代码应抛出错误Invalid format。但是,即使用户发送正确的格式,例如:11/10/2014

,以下代码也会引发错误
importPackage(Packages.java.lang);
importPackage(Packages.java.text);

sdf = new SimpleDateFormat("MM/dd/yyyy");  
testDate = null;
dateerror=false;

try  {  
    testDate = sdf.parse(params["NewParameter"]);  
    dataerror=false;
} catch (e) {
    errorMessage = "the date you provided is in an invalid date";  
    eee = e;
    dateerror=true; 
    reportContext.getDesignHandle().findElement("mytable").drop();
}  

1 个答案:

答案 0 :(得分:1)

似乎存在一个混淆:当我们将报告参数声明为" DATE"时,我们不必在报告脚本中解析它,因为它已经是一个java Date对象。因此这行代码是错误的,因为解析器会期望一个" String"类型:

testDate = sdf.parse(params["NewParameter"]);

自定义格式" MM / dd / yyyy"报表引擎实际上并未使用报表参数链接:只有webviewer才会考虑它,以指定日期应如何在参数对话框中显示。

实现您的要求的最佳方法是自定义您的webviewer的客户端javascript,以便控制Web浏览器中的日期格式。此方法的一个示例允许通过日历here输入日期。

否则,如果您确实需要在报告执行期间验证格式,虽然它不是很优雅,但唯一的方法是将参数设置为" String"输入并将您的脚本放入"初始化"报告的事件。但是,在这种情况下,每次在数据集中使用它时都必须解析它,或者在报表变量中解析它一次。