Birt中的日期参数验证

时间:2014-11-03 11:34:10

标签: java validation report birt

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

例如:

ParameterName:StartDate 类型:字符串

  1. 验证长度:

    beforeFactory中的验证脚本:

    错误代码= 0;  var str = params [" StartDate"]。value; if(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 ="无效的日期格式&#34 ;; var MSG_INVALID_START_DATE_VALUE ="无效的开始日期值&#34 ;; var MSG_INVALID_END_DATE_VALUE ="无效的结束日期值&#34 ;;

    开关(错误代码) { case ERR_INVALID_DATE_FORMAT: 提醒(MSG_INVALID_DATE_FORMAT); 打破;

    案例ERR_INVALID_START_DATE_VALUE: alert(MSG_INVALID_START_DATE_VALUE); 打破;

    案例ERR_INVALID_END_DATE_VALUE: 提醒(MSG_INVALID_END_DATE_VALUE); 打破;

    默认: 警报(ERRORCODE); }

  2. switch语句无法验证错误代码,也没有显示警告消息。

    注意: 早期使用的日期参数自定义格式,但它无法检测日期的错误值,如aa / 23/20145。

    有没有办法实现这些验证?

1 个答案:

答案 0 :(得分:2)

这里的主要问题是,您的HTML文本代码是客户端脚本,因此无法直接访问变量" errorcode"您在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中有一个这样的方法的例子。使用James指出的主题建议的javascript日历也可以改善用户体验。我希望它会有所帮助。