FacesContext не определен Ошибка при использовании FaceContext.validationFailed

Я пытаюсь использовать #{facesContext.validationFailed}, чтобы узнать, не прошла ли проверка или нет, а также для отображения диалогового окна.

Я создаю крошечный проект, чтобы протестировать его, но получаю

ReferenceError: FacesContext не определен

в моем firebug, и диалоговое окно никогда не отображается независимо от того, не прошла ли проверка или нет.

Вот мой код:

<h:form>
        <p:messages id="messages" /> 

        <h:outputLabel for="test" value="Test : *" />  
        <p:inputText value="#{newBusinessCtrl.testStr}" required="true" id="test"/>
        <p:message for="test" />  

        <p:commandButton value="Save" onclick="if (!facesContext.validationFailed)testDlg.show();"/> 
        <p:confirmDialog message="test Msg"
                         header="Success" severity="alert"            
                         widgetVar="testDlg">
            <h:outputText value="input success!"/>
        </p:confirmDialog>
</h:form>

Кто-нибудь знает, почему? Заранее спасибо.


person nosnhoj    schedule 27.12.2013    source источник


Ответы (1)


facesContext.validationFailed должен быть в выражении EL, то есть #{facesContext.validationFailed}; в противном случае это переменная javascript.

Однако я думаю, что это все равно не даст вам желаемого эффекта, так как скрипт onclick будет выполнен до отправки формы.

person asdf    schedule 27.12.2013
comment
Как я могу это забыть! Извините за опоздание с ответом и спасибо. - person nosnhoj; 30.12.2013
comment
Я изменил onclick на oncomplete, но проблема осталась. - person nosnhoj; 30.12.2013
comment
Просто нашел ответ перед публикацией. Все, что мне нужно сделать, это использовать атрибут visible для p:dialog (который также существует в p:confirmDialog, как я обнаружил), например здесь и здесь сказал. - person nosnhoj; 30.12.2013