Это работает отлично, и даже не похоже на хакерский обходной путь (как некоторые другие идеи, которые я пытался). Этот пост собирается в верхней части моих закладок для дальнейшего использования :)
ьзуя 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?
Спасибо за ваше время!