2012-02-28 4 views
0

リッチフェイス(3.3.1)カレンダーコンポーネントを日付選択ツールとして使用しており、日付フィールド編集も有効です。基本的に年の最初の2文字は '19'または '20'でなければなりません。それを行うには、箱詰めの方法がありますか、またはRichfacesカレンダーコンポーネントをカスタマイズする必要がありますか?私はバリデーターでこれをしたくありません。異なる日付は異なるバリデーターを持っています。その場合、コードが重複し、すべての日付コントロールを変更する必要があります。ここでリッチェスカレンダー年末年始(20世紀または21世紀)

コードスニペット:

<rich:calendar value="#{selectedClaim.dateOfLoss}" required="true" 
     label="Date of loss" locale="en/US" popup="true" 
     datePattern="MM/dd/yyyy" enableManualInput="true" 
     cellWidth="24px" cellHeight="22px" style="width:200px" 
     inputSize="10" rendered="#{selectedClaim.id == 0}" 
     validator="#{claimUtils.checkEntryDate}"> 
</rich:calendar> 

答えて

1

あなたがCalendarDataModelを実装し、カレンダーのデータモデルとしてそれを割り当てる必要があります。あなたの条件に一致しない場合、CalendarDataItemを無効にすることができます。

import java.text.DecimalFormat; 
import java.text.NumberFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 

import org.jboss.seam.annotations.Name; 
import org.jboss.seam.annotations.intercept.BypassInterceptors; 
import org.richfaces.model.CalendarDataModel; 
import org.richfaces.model.CalendarDataModelItem; 

@Name("richCalendarDataModel") 
@BypassInterceptors 
public class RichCalendarDataModel implements CalendarDataModel { 


    public CalendarDataModelItem[] getData(Date[] arg0) { 
     RichCalendarDataItem[] date = new RichCalendarDataItem[arg0.length]; 
     int i = 0; 
     for (Date dd : arg0) { 
      RichCalendarDataItem tmp = new RichCalendarDataItem(dd, enable_disableDate(dd)); 
      date[i] = tmp; 
      i++; 
     } 

     return date; 
    } 

    private boolean enable_disableDate(Date dd) { 
     if (!isSunday(dd)) 
      return true; 
     else 
      return false; 

    } 

    public Object getToolTip(Date arg0) { 
     ... 
    } 
... 
} 

CalendarDataModelItem:

import java.util.Date; 

import org.richfaces.model.CalendarDataModelItem; 

public class RichCalendarDataItem implements CalendarDataModelItem { 

private Date data; 

private boolean enabled; 

public RichCalendarDataItem(Date dd, boolean en) { 
    data = dd; 
    enabled = en; 
} 

public int getDay() { 
    return 0; 
} 

public Object getData() { 
    return data; 
} 

public String getStyleClass() { 
    return null; 
} 

public Object getToolTip() { 
    return null; 
} 

public boolean hasToolTip() { 
    return false; 
} 

public boolean isEnabled() { 
    return enabled; 
} 

}

関連する問題