带有表单字段的 Primefaces 对话框

Prime faces dialog with fields in the form

我有一个简单创建的表单。我想要做的是在单击时显示带有名称的对话框(即:inputField 中的值)。我意识到对话发生在 commandButton 的动作之前,所以我试图弄清楚如何获得当时的价值:

<h:form id="myForm">
  <p:confirmDialog global="true" showEffect="fade" hideEffect="fade" id="confirmDialog">
    <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
  </p:confirmDialog>

  <p:inputField id="field" value="#{myBean.myName}"/>
  <p:commandButton value="Create" update=":myForm" actionListener="#{myBean.sayHi}"> 
    <p:confirm header="Confirmation" message="Is your name actually #{myBean.myName}?" icon="ui-icon-alert" />
  </p:commandButton>
</h:form>

现在对话框只显示一个空字符串。我们该怎么做?

有了 selectOneMenu 之类的东西,我可以只添加一个 AJAX 事件。我真的需要与输入字段类似的东西吗?

在确认之前提交值只是为了在 confirmDialog 中使用它是没有意义的,所以要走的路是使用 commandButton 的 onclick 事件来更改 message="Is your name actually #{myBean.myName}?" 使用 javascript.

检查这段代码,它工作正常:

<h:form id="myForm">
  <p:growl id="msg" />
  <p:inputText id="field" value="#{indexBacking.input}" widgetVar="fieldWv"/>

  <p:commandButton id="cmd01" value="Create" onclick="showConfirm();"/>

  <p:confirmDialog showEffect="fade" hideEffect="fade" id="confirmDialog" widgetVar="confirmDialogWv">
    <f:facet name="message">
      <div id="confirmMessage"></div>
    </f:facet>
    <p:commandButton value="Yes" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" actionListener="#{indexBacking.sayHi()}" update="@form"/>
    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="PF('confirmDialogWv').hide();"/>
  </p:confirmDialog>

  <script type="text/javascript"> 
    function showConfirm() {
        PF('confirmDialogWv').show();
        $('#confirmMessage').empty();
        $('#confirmMessage').append("<p>Is your name actually [" + PF('fieldWv').jq.val() + "]?</p>");
      }
   </script>
 </h:form>

请注意,我被迫放弃这种行为并使用 p:confirmDialog 作为标准对话框来执行此操作。