Отключение функции commandButton в случае сбоя проверки inputText или запуска вызова ajax

У меня есть следующий фрагмент кода внутри формы:

<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 показывает только модальное диалоговое окно с надписью «подождите». Поскольку этот диалог является модальным, фон недоступен. Однако это по-прежнему не мешает пользователю нажимать его повторно, потому что между показом onclick и модальным диалоговым окном проходит 1 секунда. Более того; этот подход не предотвращает отправку неверных данных. Что вы можете посоветовать?

Я использую JSF2.0 и Primefaces 3.0.

Любая помощь приветствуется.

13
задан BalusC 17 January 2012 в 03:30
поделиться