【问题标题】:Date parameter validation in BirtBirt 中的日期参数验证
【发布时间】:2014-11-03 11:34:09
【问题描述】:
我正在尝试在 Birt 中实现对 Date 参数的验证。
但是脚本没有按预期执行。
例如:
参数名称:开始日期
类型:字符串
-
长度验证:
beforeFactory 中的验证脚本:
错误码=0;
var str=params["开始日期"].value;
如果(str.length!= 10)
{
错误代码=1001;
}
报表布局中的 HTML 文本:
// 错误代码
var ERR_INVALID_DATE_FORMAT = 1001;
var ERR_INVALID_START_DATE_VALUE = 1003;
var ERR_INVALID_END_DATE_VALUE = 1004;
// 错误信息
var MSG_INVALID_DATE_FORMAT ="无效的日期格式";
var MSG_INVALID_START_DATE_VALUE ="无效的开始日期值";
var MSG_INVALID_END_DATE_VALUE ="结束日期值无效";
开关(错误代码;)
{
案例 ERR_INVALID_DATE_FORMAT:
警报(MSG_INVALID_DATE_FORMAT);
休息;
案例 ERR_INVALID_START_DATE_VALUE:
警报(MSG_INVALID_START_DATE_VALUE);
休息;
案例 ERR_INVALID_END_DATE_VALUE:
警报(MSG_INVALID_END_DATE_VALUE);
休息;
默认值:
警报(错误代码);
}
switch 语句无法验证错误代码,也没有显示警报消息。
注意:
早期使用自定义格式的日期参数,但它无法检测到日期的错误值,例如 aa/23/20145。
有没有办法实现这些验证?
【问题讨论】:
标签:
java
validation
report
birt
【解决方案1】:
这里的主要问题是,您的 HTML 文本代码是客户端脚本,因此它无法直接访问您在 beforeFactory 事件中创建的变量“错误代码”。为此,您需要使用下面的“VALUE-OF”标签。注意这个变量“errorcode”是如何在 HTML 脚本中声明的:
<script>
// Error Codes
var ERR_INVALID_DATE_FORMAT = 1001,
ERR_INVALID_START_DATE_VALUE = 1003,
ERR_INVALID_END_DATE_VALUE = 1004,
MSG_INVALID_DATE_FORMAT ="Invalid Date Format",
MSG_INVALID_START_DATE_VALUE ="Invalid start date value",
MSG_INVALID_END_DATE_VALUE ="Invalid end date value",
errorcode=<VALUE-OF>errorcode</VALUE-OF>;
console.log("Evaluating date format for code:"+errorcode);
switch (errorcode) {
case ERR_INVALID_DATE_FORMAT:
alert(MSG_INVALID_DATE_FORMAT);
break;
case ERR_INVALID_START_DATE_VALUE:
alert(MSG_INVALID_START_DATE_VALUE);
break;
case ERR_INVALID_END_DATE_VALUE:
alert(MSG_INVALID_END_DATE_VALUE);
break;
default:
alert("Format seems valid, error code returned is:"+errorcode);
}
</script>
但是,在服务器端脚本中应用这种验证步骤可能是一种更好的做法,尤其是它更容易维护。您在this topic 中有一个此类方法的示例。使用詹姆斯指出的主题所建议的 javascript 日历也将改善用户体验。我希望它会有所帮助。