2009-12-16 28 views
6

Mi problema es hacer que el calendario de RichFaces restrinja las fechas para que el usuario pueda elegir .Richfaces Calendario Fechas mínimas y máximas

Digamos que quiero permitir que solo las fechas de este mes y las fechas del próximo mes sean elegidas por el usuario.

Usé los atributos preloadDateRangeStart y preloadDateRangeEnd pero no hicieron nada.

Creé mi propio CalendarDataModel que usa preloadDateRangeStart y preloadDateRangeEnd y habilita los elementos, pero el calendario en la pantalla solo permite seleccionar las fechas del mes actual. Tenga en cuenta que preloadDateRangeStart es la fecha de hoy y preloadDateRangeEnd es la fecha de hoy más 2 meses.

Me falta algo aquí seguro. ¿Alguien me puede ayudar, por favor?

Respuesta

3

Utilice el atributo isDayEnabled="isDayEnabled", donde el valor (isDayEnabled) es una función de JavaScript debe definir, en forma

function isDayEnabled(day) { 
} 

Ver el richfaces demo para más detalles.

Si desea agregar validación en el lado del servidor, utilice una costumbre JSF Validador, o utilizar las anotaciones de Hibernate Validator (ver richfaces - validador de frijol)

+0

se puede hacer esto en el lado del servidor? No quiero usar javascript. ¡Tendría que implementar validaciones adicionales en el servidor! – DaTroop

+0

implementar la validación en el servidor de forma manual. Usando JSF 'Validator' personalizado. O bien, utilizando las anotaciones de Hibernate Validator (ver richfaces - bean validator) – Bozho

+0

¡Ya hecho eso! ¡Gracias por todo! – DaTroop

1

me di cuenta de cómo funciona así que aquí va:

Creé una clase que implementa el CalendarDataModel.

no hizo uso de los preloadDateRangeStart y preloadDateRangeEnd atributos, porque aunque la CalendarDataModel sólo se preocupa por el rango entre preloadDateRangeStart y preloadDateRangeEnd en caso de que se especifiquen.

Mi CalendarDataModel deshabilita los elementos del calendario cuya fecha está fuera del rango de fechas que especifiqué en un archivo de propiedad y que utilizo en el CalendarDateModel para determinar si la fecha del elemento no está entre el rango para deshabilitarlo.

Así que ahora funciona genial. Aquí está la etiqueta:

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

También probé su solución. Funciona pero es un poco desordenado para el cliente.

Gracias de nuevo HOMBRE

+0

¿Podría publicar el código Java en su implementación de CalendarDataModel? –

+0

Lazlo No tengo el código. Cambié de trabajo Mire la implementación real http://www.java2s.com/Open-Source/Java-Document/JBoss/richfaces-ui-3.1.4.GA/org/richfaces/CalendarDataModelImpl.java.htm y haga sus cambios hombre. Su nombre parece una versión UUID 5. – DaTroop

Cuestiones relacionadas