richfaces显示modalPanel如果长页面加载时间,则在页面加载时不显示modalPanel

时间:2011-04-05 02:02:59

标签: richfaces

我使用modalpanl来防止用户多次点击提交按钮,如下面的代码。 但是,当在同一页面上进行表单验证时,它也会带来模式面板。因为验证是一个非常快速的过程,模态面板被带出并在很短的时间内被清除。比如0.5秒。它看起来像一个闪存给用户,它会带来糟糕的用户体验。 无论如何只有在加载页面需要1秒以上才能显示modalPanel。

  

的onclick = “Richfaces.showModalPanel( 'INPROGRESS');”   的onComplete = “Richfaces.hideModalPanel( 'INPROGRESS');”

1 个答案:

答案 0 :(得分:1)

您似乎希望阻止多次提交表单。您只需使用其onclick属性禁用提交按钮即可。在表单验证过程中,如果出现任何验证错误,则应该启用提交按钮。

当提交按钮的操作方法完成,并且提交按钮的rendered属性不依赖于任何Mbean值时,您只需使用其oncomplete属性启用提交按钮即可。如果提交按钮的rendered属性依赖于某些MBean的属性,并且有可能在操作方法中更改这些属性,那么您应该reRender提交按钮。

例如,

如果提交按钮的rendered属性不依赖于任何Mbean值

<a4j:commandButton id="submitBtn" value="Submit" action="#{MBean.action}" onclick="this.disabled=true" oncomplete="this.disabled=false"/>

如果提交按钮的rendered属性取决于某个Mbean值

<a4j:commandButton id="submitBtn" value="Submit" action="#{MBean.action}" onclick="this.disabled=true" rendered="#{MBean.someValue}"  reRender="#{rich:clientId('submitBtn')}"/>

我认为这种方法比使用ModalPanel方法阻止来自多个提交的表单更直接,更易于理解和维护。