Это работает отлично, и даже не похоже на хакерский обходной путь (как некоторые другие идеи, которые я пытался). Этот пост собирается в верхней части моих закладок для дальнейшего использования :)

ьзуя JSF и PrimeFaces 6.1, у меня есть поле inputText как таковое:

<p:inputText value="#{backingBean.stringField}">
    <p:ajax event="valueChange" update="@form" />
</p:inputText>

и в той же форме находится кнопка Command:

<p:commandButton id="btnDoThatThing" 
                 ajax="true" 
                 immediate="true"
                 update="@form"
                 process="@this"
                 action="#{backingBean.doThatThing}"/>

Когда я

внести изменения в поле inputText,затем нажмите где-нибудь ДРУГОЕ, чем командная кнопканажмите кнопку команды

все работает точно так, как ожидалось. НО если я:

внести изменения в поле inputText,сразу командная кнопка

кнопка НЕ ​​срабатывает, так как первый щелчок commandButton вызывает событие valueChange, которое происходит в поле inputText.

если я нажму его второй раз, действие кнопки наконец произойдет.

теперь, если я изменюp:ajax event="valueChange" вp:ajax event="keyup" первый щелчок команды commandButton работает должным образом, но, к сожалению, событие keyup на inputField довольно хакерское, и вы теряете функциональность в поле (копирование / вставка текста, выделение текста, «быстрая» печать »и т. д.)

какие-либо мысли о том, как инициировать событие изменения в поле inputText, И запустить действие commandButton, когда пользователь нажимает кнопку сразу после ввода в поле inputText?

Спасибо за ваше время!

Ответы на вопрос(1)

Ваш ответ на вопрос