【问题标题】:Richfaces poupPanel is shown before action executionRichfaces poupPanel 在动作执行之前显示
【发布时间】:2011-11-24 12:56:50
【问题描述】:

我的 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 "";
}

单击按钮“动作”和弹出显示都会执行,但看起来调用弹出窗口是先执行的。我从 bean 构造函数而不是更改后的构造函数中得到消息。您是否知道如何延迟弹出显示操作(它已经在 oncomplete 属性下)?是否有任何通常的模式可以适合这里(动作动态改变弹出面板的内容,弹出应该像结果消息)。或者也许有一种方法可以从 java 代码(例如从 bean.action)调用弹出显示? 谢谢

【问题讨论】:

    标签: java jsf-2 richfaces


    【解决方案1】:

    您需要先重新渲染&lt;rich:popupPanel&gt;s 内容,否则它仍然显示第一次渲染时的内容。您正在通过 JavaScript 重新显示已经渲染但被 CSS 隐藏的内容。

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

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 2013-08-23
      • 2012-11-11
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多