Компонент календаря Primefaces, ввод вручную после проверки maxdate завершается неудачно - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь добавить компонент ввода календаря в приложение.

Компонент ввода календаря для выбора даты и времени работает с максимальным ограничением даты ie не позволяет выбрать будущую дату

  • Затеняет будущую дату - работает нормально / Пользователь не может выбрать будущую дату

Проблема - пользователь может ввести будущую дату вручную, это не проверяет это поле.

Пользователь может ввести будущую дату вручную

5/24/2021
6/2/2020

<p:calendar id="userdate" value="#{calendarView.pricedate}" maxdate="#{calendarView.maxDate}" />

calendarView. java

private Date maxDate = new Date();

public Date getMaxDate() {
    return maxDate;
}

public void setMaxDate(Date maxDate) {
    this.maxDate = new Date();
}

Primefaces Версия

<primefaces.version>6.2</primefaces.version>

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

1 Ответ

2 голосов
/ 07 апреля 2020

Простой поиск в поисковой системе по вашему вкусу

Календарь: не проверяет ввод против mindate / maxdate

С исправленная версия 7.0

И чтобы доказать это, я создал настоящий полный [mcve]: XHMTL:

<h:form>
    <p:messages id="messages"/>
    <p:calendar id="registrationDate" value="#{testView3582.date}" mindate="#{testView3582.minDate}" maxdate="#{testView3582.maxDate}" navigator="true" yearRange="c-2:c" showButtonPanel="true"
        mask="true" styleClass="#{testView3582.maxDate}"/>

    <p:commandButton value="submit" update="messages" />
</h:form>

Bean:

@Named(value = "testView3582")
@ViewScoped
public class TestView implements Serializable {

    Date date;
    Date minDate;
    Date maxDate;

    @PostConstruct
    public void init() {
        Calendar cal = Calendar.getInstance();
        date = cal.getTime();
        cal.add(Calendar.DAY_OF_YEAR, -10);
        minDate = cal.getTime();
        cal.add(Calendar.DAY_OF_YEAR, +20);
        maxDate = cal.getTime();

    }

    //Getters/Setters omitted
}

с минутой / Максимальная дата за 10 дней до настоящего момента и за 10 дней до и при вводе вручную 20.04.20 и нажатии «Отправить» я получаю

enter image description here

В следующий раз, пожалуйста

...