如何仅在成功验证文本字段后显示对话框

时间:2011-12-13 17:05:00

标签: jsf jsf-2 primefaces

所以我的表单包含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 个答案:

答案 0 :(得分:2)

您可以使用visible的{​​{1}}属性和ajax更新整个对话框。

<p:dialog>

<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的额外好处是,每次更改时,它都会更新输入的名称。