p: поведение inputSwitch после ValidatorException - PullRequest
0 голосов
/ 24 августа 2018

У меня небольшая проблема с простым вводом inputSwitch.

Вот мое всплывающее окно:

<h:form id="form">
    [...]
    <p:outputPanel styleClass="panel">
        <p:inputSwitch id="popupSwitch" value="#{myBean.gareQuiLance}">
            <p:ajax update="@form" />
        </p:inputSwitch>
        <!-- Test output to display the bean value -->
        <h:outputText value="#{myBean.gareQuiLance}" />
    </p:outputPanel>
    [... Lots of code to display only when inputSwitch ON including those 2 elements]
    <p:calendar id="hour" value="#{myBean.hour}" validator="myValidator" showOn="false" pattern="HH:mm" timeOnly="true" mask="true" widgetVar="widgetHour" onclick="PF('widgetHour').setDate(new Date());">
        <p:ajax event="click" listener="#{myBean.untickCheckbox()}"
           update="checkbox" />
    </p:calendar>
    <p:selectBooleanCheckbox value="#{myBean.checkboxValue}" id="checkbox">
       <p:ajax update="hour" listener="#{myBean.clearHour()}" />
    </p:selectBooleanCheckbox>
    [...]
</h:form>
<f:facet name="footer">
    <h:form id="formBouton" styleClass="boutons">
        <p:outputPanel styleClass="panelBoutons">
            <p:commandButton id="validate" partialSubmit="true" value="Validate" update="form" process="formBouton form" action="#{myController.validate()}" />
            <p:commandButton id="cancel" value="Cancel" onclick="PF('widgetPopup').hide();" />
        </p:outputPanel>
    </h:form>
</f:facet>

Связанный метод компонента:

public void valider() {
    [actions including creating myEntity from myBean to store data in DB]
    RequestContext.getCurrentInstance().execute("PF('widgetPopup').hide();");
}

Методы untickCheckbox () и clearHour () говорят сами за себя и больше ничего не делают.

Валидатор по сути выдает новое ValidatorException () всякий раз, когда поле часа пустое или флажок не отмечен (это случай по умолчанию) => По сути, это заставляет пользователя выбирать действие.

Проблема, с которой я сталкиваюсь при выполнении следующего сценария:- Открытие всплывающего окна (см. Первый скриншот)- Включите inputSwitch (это создает кучу кода, включая флажок и час)- Нажмите кнопку «Подтвердить», которая вызовет средство проверки, которое отобразит сообщение об исключении (см. Второй снимок экрана)- Закройте всплывающее окно с помощью кнопки Отмена- открыть всплывающее окно (см. Третий и последний скриншот)

Ожидаемый результат:- Все вернулось к значению по умолчанию (учитывая, что заполнение бинов производится при открытии всплывающих окон).

Наблюдаемый результат:- Бин мудрый: все по умолчанию, как и должно быть.- Мудрый взгляд: все, НО входной переключатель правильный.

Я проверял его и выводил, и он определенно как-то связан с валидатором.Но я не могу понять, почему inputSwitch не вернулся к значению по умолчанию.Есть идеи?

Скриншоты для иллюстрации проблемы:

first screenshotsecond screenshotthird and last screenshot

...