Jsf 禁用p:calendar上的特定日期

Jsf 禁用p:calendar上的特定日期,jsf,primefaces,calendar,Jsf,Primefaces,Calendar,是否可以在PrimeFaces 3.5组件上禁用特定日期(例如:5月15日或6月23日)?有最小值和最大值,但我需要使用el表达式禁用特定日期,如公共假日,以便使用动态日期。 使用Hieu的答案,确保禁用的日期前面没有前导零(例如,“03/03/2013”应为“3/3/2013”)。步骤1:编写javascript函数禁用日期列表 var disabledDays = ["5-15-2013", "6-23-2013"]; function disableAllTheseDays(date) {

是否可以在PrimeFaces 3.5组件上禁用特定日期(例如:5月15日或6月23日)?有最小值和最大值,但我需要使用el表达式禁用特定日期,如公共假日,以便使用动态日期。


使用Hieu的答案,确保禁用的日期前面没有前导零(例如,“03/03/2013”应为“3/3/2013”)。

步骤1:编写javascript函数禁用日期列表

var disabledDays = ["5-15-2013", "6-23-2013"];
function disableAllTheseDays(date) {
    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
    for (i = 0; i < disabledDays.length; i++) {
        if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) {
            return [false];
        }
    }
    return [true];
}

为了禁用所有星期五,我在p:calendar上使用了beforeShowDay属性,下面的代码解释了这一点:

<p:calendar ..... mask="true" locale="fr" beforeShowDay="fridaysDisabled" .... required="true" maxdate="new Date();"/>

要禁用日期数组,请执行以下步骤:

创建包含所有日期的字符串对象:

festivosArray = "[";
for(CalendarioDao dia : festivos){
    festivosArray += "'" + dia.getFecha() + "',";
}
festivosArray += "]";
创建JavaScript函数:

<script type="text/javascript">
function deshabFest(date) {
    var disabledDays = #{calendarioView.festivosArray};

    var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
    return [disabledDays.indexOf(string) == -1, '']
}
</script>

谢谢,这应该行得通。但是,是否可以将这些禁用的日期动态导入javascript函数?我会从数据库中检索到的。这是可能的,Apoorv。您可以使用JSF EL加载动态禁用的数据库Hieu。我将第一行替换为,
var disabledDays={bean.randomDateList}
?Perissf,如何在这个案例中使用自定义验证器或Ajax事件处理程序?是的,它起作用了。然而,我尝试使用JSF EL,但没有成功。我使用了
{bean.dateString}
并且dateString是字符串的一种类型。不管怎样,我通过使用javascript数组格式的字符串(例如“['12/12/12','3/3/12'])解决了这个问题。
festivosArray = "[";
for(CalendarioDao dia : festivos){
    festivosArray += "'" + dia.getFecha() + "',";
}
festivosArray += "]";
<script type="text/javascript">
function deshabFest(date) {
    var disabledDays = #{calendarioView.festivosArray};

    var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
    return [disabledDays.indexOf(string) == -1, '']
}
</script>
<p:calendar mode="inline" locale="es" value="#{calendarioView.fechaFestivo}" id="calendarioFestivo" widgetVar="calendarioFestivo" beforeShowDay="deshabFest" />