0

我有以下使用 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碰巧在同一天,<p:calendar>不会出现 if timeOnly="true"

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

4

1 回答 1

1

基本上,mindate并且maxdate正在打破第二个日历,因为它应该是timeOnly. 删除该属性,您会看到它有效。因此,假设您的第一个日历适用于日期,第二个日历适用于时间。

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

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


使用 PrimeFaces 3.5 测试

于 2013-09-24T20:46:24.387 回答