#jsf #primefaces
Вопрос:
У меня есть ситуация в primefaces, где у меня есть кнопка, которая при нажатии вызывает удаленную команду через java-скрипт в качестве обратного вызова, эта удаленная команда отвечает за выполнение действия сохранения. Я хочу добавить подтверждение к кнопке сохранения на основе некоторого значения контроллера. Таким образом, ожидаемый результат при нажатии, если это значение верно, я хочу показать диалоговое окно подтверждения, иначе я просто хочу сделать обычное сохранение.
Я действительно новичок в примерах. Любая помощь будет высоко оценена.
<p:remoteCommand name="save" actionListener="#{controller.save()}" oncomplete="PF('statusDialog').hide()"/>
<p:button value="Save" styleClass="btn-primary btn-save" onclick="PF('statusDialog').show(); Modeler.saveBpmnToForm(save)" />
Комментарии:
1. Вы пробовали использовать классическую панель подтверждения шрифтов? primefaces.org:8080/витрина/пользовательский интерфейс/наложение/… Если это может вам помочь, вам следует отключить его и включить, оценив ваше логическое условие
2. Hii @SimoneLungarella, классическая доза подтверждения, кажется, работает для меня, у нас есть какой-нибудь другой подход..?
3. Я показываю другой подход в качестве ответа на этот пост
Ответ №1:
Всякий раз, когда вы запускаете remote command
действие, вы можете перенаправить его, чтобы отобразить фактическое диалоговое окно подтверждения, затем оттуда вы можете связать действие с кнопкой «подтвердить». Следующая логика предназначена для отображения диалогового окна только в том случае , если у вас есть логическая переменная true
, в противном случае вы выполняете save
действие, не показывая никакого диалога.
<p:remoteCommand name="save" actionListener="#{controller.status ?
controller.showDialog : controller.save}" oncomplete="PF('statusDialog').hide()"/>
Всякий раз, когда запускается эта удаленная команда, вы будете показывать следующее диалоговое окно с помощью компонента:
<p:dialog id="confirmDialog" >
<p:button value="Confirm" styleClass="btn-primary btn-save"
onclick="PF('statusDialog').show()" action="#{controller.save}"/>
<p:button value="Cancel" styleClass="btn-primary btn-cancel"
onclick="PF('confirmDialog').hide()"/>
</p:dialog>
Кнопка «подтвердить» будет выполнять фактическую логику, кнопка «отмена» должна только закрыть диалоговое окно, но это зависит от вас.