- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 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/
我的 XHTML 是这样的 案例一:ajax监听方法AjaxBehaviorE
当我使用 从 Composite Component 发送 ajax 事件时 |我使用 在 Facelet 页面 中捕获它.在 backing bean 中,我捕获类型为 AjaxBehavior
public void listenerMethod(AjaxBehaviorEvent event){ } 如何在listenerMethod()内使用AjaxBehaviorEvent获取
最近我一直在尝试将我正在开发的这个应用程序从 JSF 1.2 升级到 JSF 2,但在此过程中我遇到了瓶颈,因为您可能已经知道 AjaxBehaviorEvent 对 JSF 来说是全新的,并且回到
我有一个 JSF ajax keyup 事件链接到支持 bean 中的事件监听器。 JSF文件中的代码如下。 backing bean 中的代码如下。 public void chang
我想知道是否有办法直接使用 jquery ajax 服务器请求来触发 jsf 托管 bean 方法(带有 AjaxBehaviorEvent 类型参数:与使用 f:ajax 时触发的相同)。顺便说一句
我是一名优秀的程序员,十分优秀!