2009-12-16 97 views
6

我的問題是使RichFaces日曆限制日期被允許被用戶選擇 。Richfaces日曆的最小和最大日期

比方說,我想只允許用戶選擇本月的日期和下個月的日期。

我使用了preloadDateRangeStart和preloadDateRangeEnd屬性,但他們什麼也沒做。

我創建了我自己的CalendarDataModel,它使用preloadDateRangeStart和preloadDateRangeEnd並啓用項目,但屏幕上的日曆只允許選擇當前月份的日期。請注意,preloadDateRangeStart是今天的日期,preloadDateRangeEnd是今天的日期加上2個月。

我很想念這裏的東西。 有人可以幫我嗎?

回答

3

使用isDayEnabled="isDayEnabled"屬性,其中值(isDayEnabled)是你應該定義一個JavaScript函數,形式

function isDayEnabled(day) { 
} 

richfaces demo瞭解更多詳情。

如果你想添加驗證在服務器端,使用自定義JSF驗證,或者使用Hibernate Validator註釋(見RichFaces的 - 豆驗證)

+0

這可以在服務器端完成嗎? 我不想使用JavaScript。我將不得不在服務器上實現額外的驗證! – DaTroop 2009-12-16 11:40:55

+0

手動實現服務器上的驗證。使用自定義JSF'Validator'。或者,使用Hibernate Validator註釋(請參閱richfaces - bean驗證程序) – Bozho 2009-12-16 11:56:46

+0

已經完成了! 謝謝你的一切! – DaTroop 2009-12-16 12:17:05

1

我想通了,它是如何工作所以這裏有雲:

我創建了一個類,它實現了CalendarDataModel

雖然因爲CalendarDataModel只關心萬一preloadDateRangeStartpreloadDateRangeEnd之間的範圍內指定他們,我沒有使用preloadDateRangeStartpreloadDateRangeEnd屬性。

CalendarDataModel禁止其日期是出於我的屬性文件和我在CalendarDateModel使用,以確定項目的日期是爲了禁止它的範圍之間未指定日期範圍內的日曆項。

所以現在它工作得很好。這裏是標籤:

<a4j:outputPanel id="myCal" layout="block"> 
    <rich:calendar cellHeight="30px" cellWidth="30px" 
     dataModel="#{MyCalendarDataModel}" datePattern="dd/MM/yyyy" mode="ajax" 
     style="width:200px" value="#{MyPage.theDate}"/> 
</a4j:outputPanel> 

我也試過你的解決方案。它可以工作,但對客戶來說有點麻煩。

再次感謝你

+0

您可以將Java代碼發佈到您的CalendarDataModel實現嗎? – 2010-12-09 08:32:05

+0

Lazlo我沒有代碼。我改變了工作。看看實際的實現http://www.java2s.com/Open-Source/Java-Document/JBoss/richfaces-ui-3.1.4.GA/org/richfaces/CalendarDataModelImpl.java.htm,並讓你的變化人。你的名字看起來像UUID版本5。 – DaTroop 2010-12-09 09:33:51