2013-09-24 1 views
0

У меня есть следующая тестовая страница с помощью PrimeFaces v3.5.14:PrimeFaces: Календарь не работает, если «timeOnly =" истинный»и«MinDate»и«MaxDate»находятся на одной и те же даты

<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

В принципе, mindate и maxdate нарушают второй календарь, потому что это должно быть timeOnly. Удалите эти атрибуты, и вы увидите, что это работает. Итак, скажем, ваш первый календарь работает с датами, второй - со временем.

Если вы хотите связать выбранное время между настоящим и последующим часом, рассчитать текущее время на сервере и использовать minHour и maxHour. Это установит ваше выбранное время в дате, начиная с Jan 1, 1970. Если вы хотите, вы можете объединить его с выбором, который вы делаете в другом календаре.

Конечно, у этого есть свои минусы. Он позволяет вам выбирать каждую минуту в тот же час (помните, что вы ограничиваете только час), даже если это уже прошло. Для достижения того, что вы хотите, ваш первый календарь, кажется, лучший выбор.


Испытано с PrimeFaces 3,5