Подтверждение с поддержкой Ajax в richfaces? - PullRequest
0 голосов
/ 18 ноября 2011

Мне нужна помощь с richfaces.Вот что мне нужно сделать в псевдокоде :

//user clicked on a <h:selectBooleanCheckbox/>
if(!checkbox.checked) {
    ajax_call_method0_on_bean
    return
}
else {
    boolean_value = ajax_call_method1_on_bean
    if(boolean_value == true) show_confirm
        if(confirm_result == false) return

    //if(boolean_value == false OR confirm_result == false)
    ajax_call_method0_on_bean
}

По сути, у меня есть флажок, который, если щелкнуть по нему, сначала должен проверить, должно ли отображаться окно подтверждения, затем (если подтверждение не требуется или подтверждение в порядке), позвоните в последнее действие

1 Ответ

1 голос
/ 19 ноября 2011

Некоторые важные моменты:

1. Вы можете использовать <rich:modalPanel> для определения всплывающего окна подтверждения. Во всплывающем окне подтверждения кнопка OK будет вызывать бины doFinalAction()

<rich:modalPanel id="confirmPopUp" width="350" height="100">
        <f:facet name="header"> Confirm popup</f:facet>
            <a4j:commandButton value="OK"  action="#{bean.doFinalAction}" />
            <br />
            <a4j:commandButton value="Close"  onclick="#{rich:component('confirmPopUp')}.hide()"/>
</rich:modalPanel>

2. Вы можете использовать <a4j:jsFunction>, чтобы определить функцию javascript, которая будет вызывать метод bean-компонентов, чтобы проверить, требуется ли показ поля подтверждения. Этот метод отвечает за установку логического флага (bean.requireConfirm) в значение true, если требуется подтверждение. В противном случае выполните doFinalAction().

<a4j:jsFunction name="checkRequireConfirm" 
                action="#{bean.checkRequireConfirm}"
                oncomplete=" if (#{bean.requireConfirm}) {#{rich:component('confirmPopUp')}.show()}">
</a4j:jsFunction>

Отметьте bean.requireConfirm в атрибуте oncomplete. Покажите всплывающее окно подтверждения, если оно истинно.

3. Добавьте обработчик событий onclick к <h:selectBooleanCheckbox>, который вызывает JS checkRequireConfirm(), определенный в (2), если флажок не установлен

<h:selectBooleanCheckbox  onclick="if (!this.checked){checkRequireConfirm()}"/>
...