2015-03-09 3 views
0

У меня есть кнопки Stop and Release, которые вызывают метод сохранения и в методе сохранения отображается подтверждениеDialog. Я могу использовать кнопку «Стоп», нажать «ОК» в диалоговом окне, и этот метод работает, но затем, когда я иду к часам «Сброс», кнопка не вызывает «ActionListener». Аналогично для нажатия Release, подтверждая затем попытку остановки.CommandButton не вызывает actionListener, когда я закрываю confirmDialog

Вот две командные кнопки, которые находятся внутри режима управления.

<p:commandButton title="Stop" value="Stop" 
     rendered="#{unitSetVehicleStatusBean.crudMode == 'READ' and unitSetVehicleStatusBean.stopped =='false'}" 
     actionListener="#{unitSetVehicleStatusBean.stop}" 
     update="modeControls :mainForm" 
     process="@this :mainForm"/> 
<p:commandButton title="Release" value="Release" 
     rendered="#{unitSetVehicleStatusBean.crudMode == 'READ' and unitSetVehicleStatusBean.stopped =='true'}" 
     actionListener="#{unitSetVehicleStatusBean.release}"    
     update="modeControls :mainForm" 
     process="@this :mainForm"/> 

Адрес confirmDialog. Метод экономии вызывается вызывается из остановки() и Release() методы, то после некоторой проверки я использую

RequestContext context = RequestContext 
         .getCurrentInstance(); 
       context.execute("PF('saveNDTDialog').show();"); 
       break; 

и когда пользователь выбирает OK в confirmDialog он воссоединится этот метод часть пути через switch и завершить сохранение.

ПодтверждениеDialog.

<p:confirmDialog id="saveNDTDialog" appendTo="@(body)" 
      widgetVar="saveNDTDialog" closeOnEscape="true" 
      closable="true" 
      message="#{message.stoppedValidationNDTWarning}"> 
      <p:commandButton value="OK" 
       update="mainForm :modeControls" 
       actionListener="#{unitSetVehicleStatusBean.save('WARNING_NDT')}" 
       oncomplete="saveNDTDlg.hide();"/> 
      <p:commandButton value="Cancel" 
       onclick="saveNDTDlg.hide();" /> 
     </p:confirmDialog> 

Я считаю, что проблема что-то делать с appendTo или, возможно, OnComplete, но не слишком уверен, что происходит не так.

Любые предложения приветствуются ...

+0

Просто чтобы добавить. Если я удалю вызов confirmDialog и запускаю прямо через метод сохранения, кнопки Stop и Release работают отлично. – hello123

+0

Я считаю, что dialog.hide() я устарел в PF5 (или это 5.1). Если вы не станете кем-то старым, я бы сделал так же, как в java-методе. Также я думаю, что «saveNDTDlg» ошибочен, если у вас нет нескольких диалогов –

+0

Да, я на PF4. Есть несколько диалогов, я просто привел пример одного из них, чтобы было легче следовать. Теперь у меня это работает, но объясню в ответ. – hello123

ответ

0

Потянув диалог из основной формы и добавление формы вокруг commandButtons в диалогах, диалоговые окна начали работать, как ожидалось.

+0

В форуме PrimeFaces есть несколько сообщений об этом. Мне любопытно, если вы искали там и какие условия вы использовали. Просто чтобы посмотреть, могу ли я попытаться «пометить» сообщения там с некоторыми комментариями, поэтому в будущем они будут найдены. И, кстати, это также упоминается в документации PrimeFaces. – Kukeltje

+0

Да, я искал и пробовал это один раз, но это не сработало. Я считаю, что это не сработало из-за oncomplete = "saveHDTDlg.hide()", который я изменил на omcomplete = "PF ('saveNDTDialog'). Hide();" – hello123