我使用modalpanl来防止用户多次点击提交按钮,如下面的代码。 但是,当在同一页面上进行表单验证时,它也会带来模式面板。因为验证是一个非常快速的过程,模态面板被带出并在很短的时间内被清除。比如0.5秒。它看起来像一个闪存给用户,它会带来糟糕的用户体验。 无论如何只有在加载页面需要1秒以上才能显示modalPanel。
的onclick = “Richfaces.showModalPanel( 'INPROGRESS');” 的onComplete = “Richfaces.hideModalPanel( 'INPROGRESS');”
答案 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
方法阻止来自多个提交的表单更直接,更易于理解和维护。