Ну, на стороне клиента вы можете посмотреть на JavaScript, чтобы отключить несколько представлений, например. отключить отправку типа ввода после нажатия. Это ни в коем случае не надежный механизм.
В самом JSF это зависит от объема Бина. Если он ограничен сессией, вы можете синхронизировать доступ к его методу действия (то есть вызывать метод приложения), чтобы только один поток за раз мог выполнять логику. Также вы можете синхронизировать доступ к общим данным. Это будет работать только если у вас есть сессия сродства, хотя. Если нет, то вы будете бороться!
Однако само дерево компонентов (значения обновления, проверки процессов и т. Д.) Все равно будет вызываться для второго запроса. Может быть, вы могли бы взглянуть на PhaseListener или что-нибудь, чтобы предотвратить это, но это кажется хитрым и, возможно, излишним.
Как правило, кодирование и сборка вашего приложения означает, что вы должны иметь возможность обрабатывать несколько запросов одного и того же пользователя. Хотя лично я придерживаюсь подхода JavaScript, чтобы не допустить многократную отправку форм. Вы хотите объяснить более подробно, возможно, с помощью фрагментов кода, какую проблему вы чувствуете?