代码之家  ›  专栏  ›  技术社区  ›  Bill F

检查SSJS中的值

  •  0
  • Bill F  · 技术社区  · 11 年前

    我在SSJS中有一段代码,我正在做一些字段验证工作: 此文档是NoteXspDocument fld=字段的名称

    var thisValue = thisDoc.getValue(fld);
    print("Check Text = " + thisValue);
    print("Is is a Date " + (thisValue === Date))
    

    当我运行它时,日志如下:

    Check Text = 09/10/15 12:00 PM
    Is is a Date false
    

    在这段代码中,我不知道fld的数据类型是什么,它是一个字段名。我检查后端文档并获取NotesItem。Type(),此字段在后端的类型为文本1280,但NotesXspDocument有日期。我需要确定数据类型是什么thisValue确实像NotesDateTime对象,但我在某个地方做错了什么。 我认为问题可能是NotesDateTime和java.util之间的差异。约会,但他们把我逼疯了。

    进一步编辑-- 问题是我有一个字段名为var Fields:Array的数组,然后循环并获取 fld = Fields[n] 所以当我得到字段的值时,它可以是任何文本、日期、数字,所以当我这样做时 var thisValue = thisDoc.getValue(fld) or thisDoc.getItemValue(fld) 我需要弄清楚我有什么样的价值。我想我可以把 getItem..... 直到我找到一个可行的解决方案,但这似乎不是最佳解决方案。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Paul Stephen Withers    11 年前

    尝试 instanceof Date.class 。您得到的不是检查 thisValue 而不是检查对象本身。

        2
  •  1
  •   Bill F    11 年前

    因为我检索的字段可以是我使用的任何字段

    var thisValue = thisdoc.getValue(fld);
    

    我当时很难确定我有什么样的数据。它可能是空的Date/Number/String所以我做的第一件事就是找出后端数据类型是什么:

    var thisItem:NotesItem = thisDoc.getDocument().getFirstItem(fld);
    var type:Integer = thisItem.getType()
    

    如果该字段先前已设置,但如果它是新文档或该字段尚未收到值,则它将是1280或文本类型,并且可能为空,这会有所帮助。 所以我的第一个测试是null或“”。然后变得有点困难,因为我需要测试一些值。在我的所有组合框中,我都添加了文本“---选择???”作为列表中的第一项,所以我尝试获取“---”的子字符串,但由于数据类型的差异,我需要尝试一下:

    try{
    if (thisValue.substring(0,3) == "---"){
    print("have null Prefix");
    rtn = false;
    errMsg.push("The field " + fld + " is a Required Field please enter a value");
    break;
    }catch(e){ etc
    

    然后我在trys中包装了各种其他数据类型测试,现在我已经开始工作了。 也许是一个更好的方法,但这是有效的。

        3
  •  0
  •   teleman    11 年前

    使用 .getItemValue() 返回向量数组,然后测试数据类型。你也可以试试 .getItemValueString() 返回文本字符串或 .getItemValueDate() 或 .getItemValueDateTime() 返回日期/时间。

    自从 getItemValue() 返回数组,使用下标获取第一个元素:

    var thisValue = thisDoc.getItemValue(fld);
    var thisIsDate = (thisValue[0] instanceof Date);
    print("Check Text = " + thisValue[0]);
    print("Is this a Date ? " + thisIsDate;