gpt4 book ai didi

java - 在 JSF 2 的 AjaxBehaviorEvent 中捕获 KeyCode

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:53:31 25 4
gpt4 key购买 nike

我有一个 JSF ajax keyup 事件链接到支持 bean 中的事件监听器。

JSF文件中的代码如下。

<h:inputText id="txtDescription" value="#{institutionController.current.description}" disabled="#{institutionController.modifyControlDisable}" >
<f:ajax event="keyup" listener="#{institutionController.changeDetailsEvent}" />
</h:inputText>

backing bean 中的代码如下。

public void changeDetailsEvent(AjaxBehaviorEvent event) {
}

我想根据按键的不同实现不同的逻辑,如下面的伪代码所示。

public void changeDetailsEvent(AjaxBehaviorEvent event) {
If (event.key = Key.enter) {
do something;
} else if (event.key = Key.Escape) {
so something else;
} else {
do nothing;
}

}

谁能告诉我这是如何在支持 bean 中完成的?

最佳答案

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() 中动态获取生成的客户端ID,以便设置关键代码值,您也可以硬编码客户端ID如果它是固定的)

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;
}
}

您可以在 Mozilla DOM reference 中找到所有有效 keyCode 值的概览。 .

关于java - 在 JSF 2 的 AjaxBehaviorEvent 中捕获 KeyCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8652225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com