Как отключить кнопку jsf при щелчке [дубликат]

Одно возможное решение, полезно, если вы хотите не только удалить некоторые вещи, но и сделать что-то со всеми элементами в одном цикле:

alist = ['good', 'bad', 'good', 'bad', 'good']
i = 0
for x in alist[:]:
    if x == 'bad':
        alist.pop(i)
        i -= 1
    # do something cool with x or just print x
    print(x)
    i += 1
14
задан BalusC 8 May 2014 в 09:02
поделиться

2 ответа

Я ищу общий механизм, чтобы избежать повторной отправки формы, когда страница обновляется

. Для этого существует как минимум 2 решения, которые не могут быть объединены:

  1. Выполните перенаправление после синхронного сообщения. Таким образом, обновление будет только повторно выполнять перенаправленный запрос GET вместо первоначального запроса. Недостаток: вы больше не можете использовать область запроса, чтобы обеспечить обратную связь с конечным пользователем. JSF 2.0 решил это, предложив новую область флэш-памяти . См. Также Как показать сообщение лиц на перенаправленной странице .
  2. Выполните POST асинхронно в фоновом режиме (используя ajax). Таким образом, обновление обновит только первоначальный запрос GET, который открыл форму. Вам нужно только убедиться, что эти формы изначально открыты только с помощью запроса GET, т. Е. Вы никогда не должны выполнять переключение между страницами по почте (что само по себе уже плохой дизайн). См. Также Когда следует использовать h: outputLink вместо h: commandLink?

или когда кнопка отправки нажата один раз снова

Для этого в основном есть как минимум 2 решения, которые при необходимости можно объединить:

  1. Просто заблокируйте конечного пользователя от возможность нажать кнопку отправки во время отправки и / или после успешной отправки. Для этого существуют разные способы, в зависимости от конкретных функциональных и конструктивных требований. Вы можете использовать JavaScript для отключения кнопки во время отправки. Вы можете использовать атрибуты JFF disabled или rendered, чтобы отключить или скрыть кнопку после отправки. См. Также Как сделать предупреждение двойного щелчка в JSF 2 . Вы также можете использовать оверлейное окно во время обработки ajax-запросов для блокировки любого взаимодействия с пользователем. Для этой цели PrimeFaces имеет <p:blockUI>.
  2. Подтвердить уникальность недавно добавленного объекта на стороне сервера. Это намного надежнее, если вы абсолютно хотите избежать дублирования по техническим причинам, а не по функциональным причинам. Это довольно просто: поставьте ограничение UNIQUE на столбец DB, о котором идет речь. Если это ограничение нарушено, то база данных DB (и DB), такая как JPA), вызовет исключение нарушения ограничения. Это лучше всего сделать в сочетании с настраиваемым JSF-валидатором, который заранее проверяет ввод, выполнив SELECT именно в этом столбце и проверив, не возвращается ли запись. JVF-валидатор позволяет отображать проблему во вкусе сообщения дружественных лиц. См. Также среди других Проверка формата и уникальности электронной почты для DB .
17
ответ дан Community 26 August 2018 в 21:05
поделиться

Вместо создания маркера вручную вы можете использовать решение BalusC. Он предложил шаблон Post-Redirect-GET в своем блоге

В этих ответах можно найти альтернативные решения:

3
ответ дан Manuel 26 August 2018 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: