如何在p:calendar中禁用月中的几天

时间:2016-11-03 04:14:13

标签: jsf primefaces calendar

是否可以禁用排除当月的第一个日期和最后日期?例如:当前日期:3-11-2016,因此仅1-11-2016 and 30-11-2016启用此(1-11-2016 and 30-11-2016)将按动态月计算。因此,我试图将第一个日期和最后一个日期启用,除此之外,所有应该被禁用。

2 个答案:

答案 0 :(得分:1)

如果只需要启用当前日期的月份,则必须动态设置来自托管bean的两个日期(最小值和最大值),使用java类Calendar提供操作日期的方法,可以使用以下命令行:

Calendar cal = Calendar.getInstance(); 
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMinimum(Calendar.DAY_OF_MONTH), 0, 0, 0);
minDate = cal.getTime();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMaximum(Calendar.DAY_OF_MONTH), cal.getActualMaximum(Calendar.HOUR_OF_DAY), 59, 59);
maxDate = cal.getTime();

然后将此两个日期设置为在日历中定义范围:

<p:calendar mindate="#{calendarController.minDate}" 
            maxdate="#{calendarController.maxDate}" 
            ......>
</p:calendar>

要停用本月的剩余时间,只留下第01天和第30天看看:Disable specific dates on p:calendar

答案 1 :(得分:-2)

try {
        String mindateString="1/11/2016";
        String maxdateString="30/11/2016";
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        setMindate(format.parse(mindateString));
        setMaxdate(format.parse(maxdateString));

    }catch(Exception e){
        log.error(e);
    }
primefaces calendar...
<p:calendar maxdate="#{welcomeController.maxdate}" 
            mindate="#{welcomeController.mindate}" size="10"
            readonlyInput="true" pattern="dd/MM/yyyy">
</p:calendar>

enter image description here