Я хочу проверить свое поле inputText, которое находится в popupPanel. Он должен содержать только числа.Закрытие всплывающего окна только в том случае, если форма действительна
<h:form>
<h:outputText value="Input:"/>
<h:inputText id="myID" value="#{myBean.field}"
validatorMessage="Only numbers">
<f:validateRegex pattern="([0-9])*$" />
<rich:validator />
<a4j:ajax event="change" render="msgValidator" />
</h:inputText>
<h:message id="msgValidator" for="myID" styleClass="text_colorRed" />
</h:form>
В конце концов, я хочу сохранить все с помощью кнопки. Если вход правильный, я хочу закрыть всплывающее окно, иначе я хочу повторно вставить правильный ввод без закрытия всплывающего окна.
<a4j:ajaxButton type="submit" value="Save" styleClass="text_weigthBold"
action="#{myBean.save()}" render="myTable"
oncomplete="#{rich:component('myPopup')}.hide();" execute="@this">
</a4j:ajaxButton>
К сожалению, когда я ввожу неправильный ввод и нажмите два раза на кнопку, это сохранить запрос и закрыть всплывающее окно без запроса ввести правильный текст.
Я также использовал Java-валидатор, но поведение по-прежнему остается прежним.
Что я могу сделать, чтобы исправить эту ошибку?
Я использую Richfaces 4.2, и да, это a4j: commandButton. К сожалению, если я использую facesContext.validationFailed, это неверно, потому что, когда я ввожу правильный ввод и сохраняю, всплывающее окно не закрывается. Он вызывает действие, и ответ правильный, но всплывающее окно остается открытым. Что я могу сделать? –
@ travis_91 Я обновил свой ответ. Вы должны изменить выполнение на '@ form' или что-то еще, что вы хотите (я использую popupId для этого типа издания во всплывающем окне), потому что вы должны зафиксировать ввод (так что вы также можете передать идентификатор ввода). –
Я попытался изменить выполнение с помощью @form или Id всплывающего окна, но когда я нажимаю кнопку, он не выполняет действие и метод моего компонента. Ты знаешь почему? –