2014-05-23 138 views
2

我有意見列出了節日日期。而且我的表單上有一個日期字段,需要與我的假日日期列表不同。所以我創建了一個驗證器來檢查它。將日期與日期列表進行比較

<xp:validateExpression message="İzin başlangıcı resmi tatillere denk gelemez."> 
    <xp:this.expression> 
     <![CDATA[#{javascript:var dHolidays = @DbColumn(@DbName(),"(lookupHoliday)", 1); 
      [email protected](value, dHolidays)}]]> 
    </xp:this.expression> 
</xp:validateExpression> 

這將工作在公式語言很好,但xpages有一些古怪的日期格式,我無法比較。

+0

我已經通過序列化視圖中的日期和比較字符串來解決我的問題。這工作得很好,但我想知道如果這是一個適當的和實際的方式來做到這一點。 var dHolidays = @DbColumn(@DbName(),「(lookupHolidaySerialized)」,1); sValue = @Right(@Text(100 + @ Day(value)),2)+「。」 + @Right(@Text(100 + @ Month(value)),2)+「。」 + @Text(@Year(value)); !@IsMember(sValue,dHolidays) – senbon

回答

1

您可以使用java.text.SimpleDateFormat日期值轉換爲字符串,並將其在validateExpression比較:

var sdf = new java.text.SimpleDateFormat("dd/MM/yyyy"); 
    var dHolidays = @DbColumn(@DbName(),"(lookupHoliday)", 1); 
    var newDate = sdf.format(value); 
    for (var i=0; i < dHolidays.length; i++) { 
     if (sdf.format(dHolidays[i]) === newDate) { 
      return false; 
     } 
    } 
    return true; 

你可以列出你的視圖的第一列正常注日期(而不是字符串)這種方式。

+0

預先格式化日期是一種很好的做法。它會幫助我很多。 – senbon

相關問題