У меня небольшая проблема с простым вводом 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 не вернулся к значению по умолчанию.Есть идеи?
Скриншоты для иллюстрации проблемы: