我使用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
}
简而言之,如果minDate
和maxDate
恰好在同一天,<p:calendar>
就不会显示timeOnly="true"
。
如果您能告诉我这是PrimeFaces的错误还是我在这里做错了,我将非常感激。
答案 0 :(得分:0)
基本上,mindate
和maxdate
打破了第二个日历,因为它应该是timeOnly
。删除该属性,你会看到它的工作原理。所以,比方说,你的第一个日历适用于日期,第二个日历适用于时间。
如果要在现在和一小时之间限制所选时间,请计算服务器中的当前时间并使用minHour
和maxHour
。这会将您选择的时间设置为从Jan 1, 1970
开始的日期。如果您愿意,可以将它与您在其他日历中所做的选择结合起来。
当然,这样做有其缺点。它允许您在同一小时内选择每一分钟(记住您只限制小时),即使它已经过去了。为了达到你想要的效果,你的第一个日历似乎是最好的选择。
使用PrimeFaces 3.5进行测试