Ответ 1
AjaxBehaviorEvent
не содержит никакой информации об объекте JavaScript event
. Вам нужно передать нужную информацию самостоятельно. Это может быть достигнуто с помощью скрытого поля ввода, значение которого должно быть предварительно заполнено JavaScript. Например,
<h:inputText value="#{bean.input}" onkeyup="document.getElementById('#{keyCode.clientId}').value=event.keyCode">
<f:ajax event="keyup" execute="@this keyCode" listener="#{bean.listener}" />
</h:inputText>
<h:inputHidden id="keyCode" binding="#{keyCode}" value="#{bean.keyCode}" />
(обратите внимание, что id
скрытого поля включено в execute
, чтобы оно передавалось вместе с запросом ajax, также обратите внимание, что binding
используется для динамического получения сгенерированного идентификатор клиента в document.getElementById()
, чтобы установить значение key code, вы также можете также указать код клиента, если он исправлен)
с
private String input;
private int keyCode;
public void listener() {
switch (keyCode) {
case 13:
// Enter key was pressed.
break;
case 27:
// Escape key was pressed.
break;
default:
// Other key was pressed.
break;
}
}
Вы можете найти обзор всех допустимых значений keyCode
в ссылке на Mozilla DOM.