У вас есть несколько форм внутри таблицы. Когда вы повторно визуализируете другую форму из формы с помощью ajax, ее состояние просмотра будет потеряно, и, следовательно, 1-й щелчок не будет выполнен. Этот щелчок, однако, заботится о том, чтобы форма возвращала состояние просмотра, поэтому второй щелчок работает.
Технически, вам нужно перерисовать только содержимое другой формы, но это невозможно в данном конкретном случае использования. Лучше поставить <h:form>
вне <h:dataTable>
, чтобы у вас была одна форма с общим состоянием просмотра.
<h:form>
<h:dataTable>
...
</h:dataTable>
</h:form>
Если ваша страница также содержит другие формы, я бы предложил отображать только текущую форму вместо всех, в противном случае любые действия с этими формами также будут неудачными.
<f:ajax event="click" listener="#{my_user.delete}" render="@form" />