更改月份时禁用日期

Disable days when change months

我正在使用一个功能来禁用除星期一以外的所有日期或启用下一个工作日到假期的星期一。我 运行 显示日历之前的功能,它工作得很好,但当用户更改日历中的当前月份时,我需要再次 运行 该功能。

这是日历:

<p:calendar beforeShowDay="disableDays" navigator="true" readonlyInput="true" showOn="button" value="#{bean.date}">
    <f:convertDateTime pattern="yyyy/MM/dd" timeZone="#{timeZone}" />
</p:calendar>

和函数:

function disableDays(date) {
    var datesToDisable = [ "8-1-2015", "8-2-2015", "8-4-2015", "8-5-2015", "8-6-2015", "8-7-2015", "8-8-2015", "8-9-2015", "8-11-2015", "8-12-2015", "8-13-2015", "8-14-2015", "8-15-2015", "8-16-2015", "8-17-2015", "8-19-2015", "8-20-2015", "8-21-2015", "8-22-2015", "8-23-2015", "8-25-2015", "8-26-2015", "8-27-2015", "8-28-2015", "8-29-2015", "8-30-2015" ];
    var month = date.getMonth(), day = date.getDate(), annio = date.getFullYear();
    for (i = 0; i < datesToDisable.length; i++) {
        if ($.inArray((month + 1) + '-' + day + '-' + annio, datesToDisable) != -1) {
            return [ false ];
        }
    }
    return [ true ];
}

我该怎么做?

这个答案是部分伪代码的摘要,当对问题的所有评论都将被解释和处理时。它可能包含拼写错误,错误 类 但现在最重要的是意图。也许以后会改进

xhtml:

<p:calendar...>
    <p:ajax event="viewChange" listener="#{bean.myViewAction}" update="scriptPanel" />
</p:calendar>

<h:panelGroup id="scriptPanel">
    <script>
        function disableDays(date) {
            var datesToDisable = #{bean.disableDates};
            var month = date.getMonth(), day = date.getDate(), annio = date.getFullYear();
            for (i = 0; i < datesToDisable.length; i++) {
                if ($.inArray((month + 1) + '-' + day + '-' + annio, datesToDisable) != -1) {
                    return [ false ];
                }
            }
            return [ true ];
        }
    </script>
</h:panelGroup>

豆豆:

public void viewChange(DateViewChangeEvent e) { 
    // Get relvant info from event
    // determine new disableDates and set those in the correct formatted string
}

public void getDisableDates() {
    return disableDates;
}