【问题标题】:PrimeFaces: Calendar not working if "timeOnly='true'" and "minDate" & "maxDate" are on the same datePrimeFaces:如果“timeOnly='true'”和“minDate”和“maxDate”在同一日期,日历不起作用
【发布时间】:2013-09-29 20:31:24
【问题描述】:

我有以下使用 PrimeFaces v3.5.14 的测试页面:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Test page</title>
    </h:head>
    <h:body>
        <h:form>
            <p:calendar pattern="MMMM dd, yyyy hh:mma" value="#{mrBean.date}"
                        mindate="#{mrBean.minDate}" maxdate="#{mrBean.maxDate}" />

            <p:calendar pattern="HH:mm" value="#{mrBean.date}" timeOnly="true" 
                        mindate="#{mrBean.minDate}" maxdate="#{mrBean.maxDate}" />
        </h:form>
    </h:body>
</html>

这是我的@ManagedBean

@ManagedBean
@RequestScoped
public class MrBean {
    private Date minDate;
    private Date maxDate;
    private Date date;

    @PostConstruct
    public void prepareServices() {
        this.minDate = new Date();
        this.maxDate = new DateTime().plusHours(1).toDate();
    }

    // Getters and Setters   
}

简而言之,如果minDatemaxDate 恰好在同一日期,则&lt;p:calendar&gt; 不会出现timeOnly="true"

如果您能告诉我这是 PrimeFaces 的错误还是我在这里做错了什么,我将不胜感激。

【问题讨论】:

    标签: jsf-2 primefaces calendar timepicker


    【解决方案1】:

    基本上,mindatemaxdate 打破了第二个日历,因为它应该是 timeOnly。删除该属性,您会看到它有效。因此,假设您的第一个日历处理日期,第二个处理时间。

    如果你想在现在和一个小时之后限制选择的时间,计算服务器中的当前时间并使用minHourmaxHour。这会将您选择的时间设置为从Jan 1, 1970 开始的日期。如果您愿意,可以将其与您在其他日历中所做的选择结合起来。

    当然,这样做有其缺点。它允许您选择同一小时内的每一分钟(请记住,您只限制了小时),即使它已经过去了。为了实现你想要的,你的第一个日历似乎是最好的选择。


    使用 PrimeFaces 3.5 测试

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2017-11-07
      • 2014-06-26
      • 2015-04-02
      相关资源
      最近更新 更多