私はPrimeFacesを使用しており、そのp:inputText内の最新のキーストロークに基づいてビューのいくつかのコンポーネントを更新する必要があるp:inputTextフィールドがあります。コードは次のとおりです。
<p:inputText value="#{customerLController.surnameFilterConstraint}"
id="surnamefilterfield">
<p:ajax event="keyup"
update=":custForm:custDataTable"
listener="#{customerLController.focusSurname}"
oncomplete="primeFacesId('surnamefilterfield')"/>
</p:inputText>
問題は、上記のコードは、矢印キーストロークの場合でも Ajax を起動することです (コストのかかる更新を考えると、これは避けたいと思います)。理想的には、ユーザーがEnterキーを押したときではなく、キーストロークで変更が発音されるという条件付きのp:ajax event="change"の別のバージョンが必要です(これが現在発生しています)。
p:ajaxコンポーネントで特定のキーアップ イベントを除外する方法が許可されていない場合、唯一の (?) 代替手段はクライアント側で JavaScript を呼び出してから、Javascript で Ajax 呼び出しを実装することだと思いますが、私はPrimeFaces のp:ajaxコンポーネントを使用する利便性を放棄しませんか?