Несколько представлений формы при вызове диалогового окна из другого диалогового окна jsf

Я пытаюсь вызвать диалоговое окно (p:dialog) из другого диалогового окна. На моей странице при нажатии на ссылку открывается одно диалоговое окно, в этом диалоговом окне есть два раздела: один для входа в систему и другой для регистрации. В настоящее время структура моей страницы выглядит следующим образом.

<h:form>
    <h:outputLink value="javascript:void(0)" onclick="dlg.show()" title="Login" />
</h:form>

<p:dialog id="dialog" header="Login" widgetVar="dlg" appendToBody="true" modal="true" width="750">
    <h:form id="loginForm">
        ...
    </h:form>

    <h:form id="signupForm">
        ...
        <p:commandButton id="submitButton" value="SignUp" 
            onstart="statusDialog.show();" 
            action="# {signupBean.doSignup}" 
            update="growl" 
            oncomplete="statusDialog.hide();dlg.hide();welcome.show();"/>
    </h:form>
</p:dialog>

<p:dialog header="Welcome" id="welcome" resizable="false" widgetVar="welcome" width="700" closable="false" modal ="true">

</p:dialog>

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю "Отправить" и на странице появляются ошибки проверки, отображаются сообщения об ошибках и новое диалоговое окно. Предполагается, что новое диалоговое окно будет отображаться только после успешного заполнения формы без каких-либо ошибок проверки.

Куда я иду не так?

1 ответ

Решение

Результат проверки находится в oncomplete атрибут компонентов PrimeFaces, доступных в JavaScript args.validationFailed переменная, которая возвращает boolean, Просто используйте это.

oncomplete="if (!args.validationFailed) { statusDialog.hide(); dlg.hide(); welcome.show(); }"/>
Другие вопросы по тегам