2009-12-16 9 views
6

Mein Problem ist, den RichFaces-Kalender zu machen, der das Datum einschränkt, das vom Benutzer gewählt werden darf.Richfaces-Kalender Minimale und maximale Daten

Angenommen, ich möchte nur die Daten dieses Monats und die Daten des nächsten Monats vom Benutzer auswählen lassen.

Ich verwendete die preloadDateRangeStart und preloadDateRangeEnd Attribute, aber sie taten nichts.

Ich habe mein eigenes CalendarDataModel erstellt, das preloadDateRangeStart und preloadDateRangeEnd verwendet und die Elemente aktiviert, aber der Kalender auf dem Bildschirm lässt nur die Daten des aktuellen Monats zu. Beachten Sie, dass preloadDateRangeStart das aktuelle Datum und preloadDateRangeEnd das aktuelle Datum plus 2 Monate ist.

Ich vermisse hier sicher etwas. Kann mir bitte jemand helfen?

Antwort

3

Verwenden Sie das isDayEnabled="isDayEnabled" Attribut, wobei der Wert (isDayEnabled) eine JavaScript-Funktion ist, sollten Sie in Form

function isDayEnabled(day) { 
} 

Siehe richfaces demo um weitere Informationen definieren.

Wenn Sie die Validierung auf der Server-Seite hinzufügen möchten, verwenden Sie eine benutzerdefinierte JSF Validator oder Hibernate Validator Anmerkungen (siehe Richfaces - bean-Validator)

+0

Kann dies auf der Serverseite getan werden? Ich möchte kein JavaScript verwenden. Ich müsste zusätzliche Validierungen auf dem Server implementieren! – DaTroop

+0

implementieren Sie die Validierung auf dem Server manuell. Verwenden benutzerdefinierter JSF 'Validator'. Oder mit Hibernate Validator Annotationen (siehe richfaces - Bean Validator) – Bozho

+0

Schon fertig! Danke für alles! – DaTroop

1

ich herausgefunden, wie es so funktioniert hier geht es:

Ich habe eine Klasse erstellt, die CalendarDataModel implementiert.

Ich habe nicht verwenden, um die preloadDateRangeStart und preloadDateRangeEnd Attribute aber, weil die CalendarDataModel nur über den Bereich zwischen preloadDateRangeStart und preloadDateRangeEnd im Fall kümmern Sie sie angeben.

Meine CalendarDataModel deaktiviert Kalenderelemente, deren Datum außerhalb des Datumsbereichs liegt, den ich in einer Eigenschaftendatei angegeben habe und den ich in CalendarDateModel verwende, um festzustellen, ob das Datum des Elements nicht zwischen dem Bereich liegt, um es zu deaktivieren.

So jetzt funktioniert es super. Hier ist der Tag:

<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> 

Ich habe auch Ihre Lösung versucht. Es funktioniert, aber es ist ein bisschen chaotisch auf dem Client.

Vielen Dank wieder mann

+0

Könnten Sie bitte den Java-Code an Ihre Implementierung von CalendarDataModel senden? –

+0

Lazlo Ich habe den Code nicht. Ich habe meinen Job gewechselt. Schauen Sie sich die tatsächliche Implementierung http://www.java2s.com/Open-Source/Java-Document/JBoss/richfaces-ui-3.1.4.GA/org/richfaces/CalendarDataModelImpl.java.htm an und nehmen Sie Ihre Änderungen vor. Ihr Name sieht wie eine UUID Version 5 aus. – DaTroop

Verwandte Themen