【问题标题】:Date parameter validation in BirtBirt 中的日期参数验证
【发布时间】:2014-11-03 11:34:09
【问题描述】:

我正在尝试在 Birt 中实现对 Date 参数的验证。 但是脚本没有按预期执行。

例如:

参数名称:开始日期 类型:字符串

  1. 长度验证:

    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 日历也将改善用户体验。我希望它会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多