Похоже, вы хотите запретить многократную подачу формы. Вы можете просто отключить кнопку отправки, используя ее атрибут 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
для блокировки формы из нескольких представлений.