validateExpression上的@Weekday行为

时间:2014-05-16 14:01:03

标签: xpages xpages-ssjs

<xp:validateExpression
                            message="İzinler pazar günü başlayamaz.">
                            <xp:this.expression><![CDATA[#{javascript:var DateConverter = {
 dateToString: function( date:java.util.Date, pattern:String ){
  try {
   if( !date ){ return ''; }

   var formatter = DateConverter.getFormatter( pattern );
   return formatter.format( date );
  } catch( e ){
   // ErrorHandling
  }
 },

 stringToDate: function( dateString:String, pattern:String ){
  try {
   if( !dateString ){ return null; }

   var formatter = DateConverter.getFormatter( pattern );
   return formatter.parse( dateString );
  } catch( e ){
   // ErrorHandling
  }
 },

 getFormatter: function( pattern:String ){
  try {
   var cacheKey = 'dateFormatter' + pattern;
   var dateFormatter = applicationScope[ cacheKey ];
   if( !dateFormatter ){
    dateFormatter = new java.text.SimpleDateFormat( pattern );
    applicationScope[ cacheKey ] = dateFormatter;
   }

   return dateFormatter;
  } catch( e ){
   // ErrorHandling
  }
 } 
};

vDate = DateConverter.stringToDate(getComponent("LeaveDate").getSubmittedValue(), 'dd.MM.yyyy' );
return (@Weekday(vDate) != 1);
}]]></xp:this.expression>

我试图添加验证来限制周日的选择。但是无论我选择哪个日期,表达式都返回True。

上面的代码片段是将字符串转换为日期,因为我读到getSubmittedValue()返回字符串而不管源字段类型如何。

return (@Weekday(getComponent("LeaveDate").getSubmittedValue()) != 1);

我的第一个代码就是这个,但我也无法使用它。

2 个答案:

答案 0 :(得分:1)

值得一看Java Calendar class。要在其中加载日期,请使用:

java.util.Calendar.getInstance();
java.util.Calendar.setTime(date);

然后,您可以使用java.util.Calendar.get(java.util.Calendar.DAY_OF_WEEK)并针对静态字段java.util.Calendar.SUNDAY

进行检查。

答案 1 :(得分:0)

在验证公式中,要验证的值可用value。所以你的验证公式需要更简单:

      @Weekday(value) !== 1;

这对你有用吗?