Как отображать диалог только после успешно проверенного текстового поля - PullRequest
2 голосов
/ 13 декабря 2011

Итак, у меня есть форма с 1 полями, которые должны быть required

<h:form id="form">
    <h:panelGrid columns="2">
        <h:inputText id="default" requiredMessage="This field is required." 
                     value="#{displayName.name}" required="true" />
        <p:message for="default"/>
    </h:panelGrid>
    <p:commandButton value="Test" update="form" onclick="displayDlg.show();"/>
</h:form>
<p:dialog header="Dialog" widgetVar="displayDlg" id="dialog">
    <h:outputText value="The name you just input is: #{displayName.name}"/>
</p:dialog>

Поэтому, когда я нажимаю кнопку Test, а , а не , что-то внутри текстового поля, появляется сообщение об ошибке.

Я хочу, чтобы, если процесс проверки прошел успешно, я хочу отобразить диалоговое окно с отображаемым именем, которое вы только что набрали. Но если проверка не пройдена, не показывайте диалоговое окно. И мне трудно это сделать. Я пытаюсь поставить dialog внутри или снаружи диалога, но без работы. Пожалуйста, дайте мне совет

1 Ответ

2 голосов
/ 13 декабря 2011

Вы можете использовать атрибут visible для <p:dialog> и ajax-обновить весь диалог.

<h:form id="form">
    <h:panelGrid columns="2">
        <h:inputText id="default" requiredMessage="This field is required." 
                     value="#{displayName.name}" required="true" />
        <p:message for="default"/>
    </h:panelGrid>
    <p:commandButton value="Test" update="form :dialog" />
</h:form>
<p:dialog id="dialog" header="Dialog" visible="#{not empty displayName.name}">
    <h:outputText value="The name you just input is: #{displayName.name}"/>
</p:dialog>

Дополнительным преимуществом наличия :dialog в update является то, что оно будетобновляйте также введенное имя при каждом его изменении.

...