Диалог простых граней с полями в форме - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть просто созданная форма.Что я хочу сделать, это показать мой диалог с именем (то есть: значение из 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.Мне действительно нужно что-то подобное с полем ввода?

1 Ответ

0 голосов
/ 29 сентября 2018

Нет смысла отправлять значение перед подтверждением, просто использовать его в confirmDialog, поэтому можно использовать событие onclick команды commandButton для изменения 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: verifyDialog в качестве стандартного диалога, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...