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();
}
答案 0 :(得分:1)
似乎存在一个混淆:当我们将报告参数声明为" DATE"时,我们不必在报告脚本中解析它,因为它已经是一个java Date对象。因此这行代码是错误的,因为解析器会期望一个" String"类型:
testDate = sdf.parse(params["NewParameter"]);
自定义格式" MM / dd / yyyy"报表引擎实际上并未使用报表参数链接:只有webviewer才会考虑它,以指定日期应如何在参数对话框中显示。
实现您的要求的最佳方法是自定义您的webviewer的客户端javascript,以便控制Web浏览器中的日期格式。此方法的一个示例允许通过日历here输入日期。
否则,如果您确实需要在报告执行期间验证格式,虽然它不是很优雅,但唯一的方法是将参数设置为" String"输入并将您的脚本放入"初始化"报告的事件。但是,在这种情况下,每次在数据集中使用它时都必须解析它,或者在报表变量中解析它一次。