У меня есть следующий фрагмент кода внутри формы:
<p:panel id="panel" header="lalalala">
<h:panelGrid columns="5">
<h:outputLabel value="Enter name" for="name" />
<p:inputText id="name" value="#{userBean.name}"
required="true" label="name" maxlength="15"
validatorMessage="oops"
requiredMessage="ooopps">
<f:validateRegex
pattern="^somepattern$">
</f:validateRegex>
<p:ajax event="blur" update="inputValidationMessage" />
</p:inputText>
<p:message id="inputValidationMessage" showSummary="false"
for="name" />
<p:watermark for="name" value="eg. John" />
</h:panelGrid>
<p:commandButton id="submitButton" value="Submit" update="panel"
actionListener="#{userBean.save}"
onclick="handleOnclick"
oncomplete="handleAjaxResponse(xhr, status, args)">
</p:commandButton>
<p:messages autoUpdate="true" globalOnly="true" showDetail="true" />
</p:panel>
Таким образом, сообщения проверки корректно работают с элементом inputText
. Но кнопка отправки по-прежнему выполняет Ajax-запрос при нажатии, даже если ввод неверен. Я хочу, чтобы запрос Ajax отправлялся, если inputText действителен.
Как мне это сделать?
Кроме; есть еще один случай, когда я хотел бы отключить кнопку. Это тот случай, когда inputText проверяется, и пользователь нажимает кнопку. Причина этого в том, что я не хочу, чтобы пользователь по ошибке заливал запросы. (т.е. несколько раз нажмите кнопку отправки)
В настоящее время функция javascript handleOnclick
показывает только модальное диалоговое окно с надписью «подождите». Поскольку этот диалог является модальным, фон недоступен. Тем не менее, это по-прежнему не мешает пользователю нажимать его несколько раз, потому что между нажатием кнопки мыши и модальным диалогом проходит 1 секунда. Более того; этот подход не предотвращает предоставление неверных данных. Что вы можете предложить?
Я использую JSF2.0 и Primefaces 3.0.
Любая помощь приветствуется.