Richfaces poupPanel отображается перед выполнением действия - PullRequest
2 голосов
/ 25 сентября 2011

У меня есть форма JSF 2.0, которая выглядит следующим образом

<h:form id="formId">
.
.
.
       <a4j:commandButton action="#{bean.myAction}" value="foo"  oncomplete="#{rich:component('popup')}.show();" />
</form>
 <rich:popupPanel id="popup" modal="false" autosized="true"
                              resizeable="false">

                <h:form id="form2">
                    <h:panelGrid columns="1" >               
                            <h:outputText id="idText" value="#{bean.message}" />
                        <h:commandButton action="#" onclick="#{rich:component('popup')}.hide(); return false;" value="ok"/>
                    </h:panelGrid>
                    </h:form>

            </rich:popupPanel>

и метод bean

 public String action(){
    message = "Some message";
    return "";
}

При нажатии кнопки выполняются как «действие», так и всплывающее представление, но выглядит как вызоввсплывающее окно было выполнено первым.Я получаю сообщение от бобового конструктора, а не измененного.Есть ли у вас какие-либо идеи, как отложить всплывающее действие шоу (он уже находится под атрибутом oncomplete)?Существует ли здесь какой-либо обычный шаблон (действие динамически меняет содержимое всплывающей панели, всплывающее окно должно быть похоже на конечное сообщение).Или, может быть, есть способ вызвать всплывающее окно из кода Java (например, из bean.action)?Спасибо

1 Ответ

1 голос
/ 25 сентября 2011

Сначала необходимо повторно обработать содержимое <rich:popupPanel>, в противном случае оно по-прежнему будет отображаться с момента первого отображения. Вы заново отображаете уже отредактированный, но скрытый CSS-контент с помощью JavaScript.

<a4j:commandButton render=":popup:form2" ... />
...