JSF命令按钮刷新页面,弹出菜单立即消失

时间:2013-07-15 00:07:51

标签: jsf popup richfaces

我试图通过检查一些条件来显示一个弹出菜单,例如,如果没有选择显示弹出窗口等等,并且如果每次都很好提交页面。这是代码:

<h:commandButton onclick="if (#{moneyTransferManager.showPopup()})
                                    #{rich:component('popup')}.show();"  value="Devam" >
      <rich:componentControl target="popup" operation="show" />

      </h:commandButton>
<rich:popupPanel id="popup" modal="false" autosized="true" resizeable="false">
      <f:facet name="header">
      <h:outputText value="Simple popup panel" />
      </f:facet>
      <f:facet name="controls">
      <h:outputLink value="#" onclick="#{rich:component('popup')}.hide();
                                return false;">
                                    X
      </h:outputLink>
      </f:facet>
       <p>
          The popup panel is open and closed from the javascript function of component client side object. The following code
                                <a href="#" onclick="#{rich:component('popup')}.hide()">hide this panel</a>:
      <f:verbatim>&#35;</f:verbatim> #{rich:component('popup')}.hide()
      </p>
      </rich:popupPanel>

然后单击按钮后,弹出窗口显示一秒钟,然后刷新页面并弹出窗口丢失。为了防止我尝试刷新页面:

<f:ajax execute="@form" render="@none" />

但是如果一切都正确,如果我不需要弹出窗口我需要通过commandbutton提交页面,但是因为我说render = @“none”我不能这样做。那么我该怎么办呢?

由于

1 个答案:

答案 0 :(得分:1)

<h:commandButton>有一个默认按钮类型submit,在点击时会提交封闭的h:form。这就是您点击时页面刷新的原因。

<h:button>应该用于java脚本用法。此外,如果type属性设置为button<h:commandButton>将变为<h:button>

<h:button onclick="if (#{moneyTransferManager.showPopup()})
                                        #{rich:component('popup')}.show();" value="Devam"/>

或者

<h:commandButton type="button" onclick="if (#{moneyTransferManager.showPopup()})
                                    #{rich:component('popup')}.show();"  value="Devam" >

另见: