当前位置: 首页 > 面试题库 >

在JSF 2的AjaxBehaviorEvent中捕获KeyCode

空佐
2023-03-14
问题内容

我有一个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>

支持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用来动态获取生成的客户ID
document.getElementById()以便设置键值,您也可以对客户端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;
    }
}

您可以keyCode在Mozilla
DOM参考中
找到所有有效值的概述。



 类似资料:
  • 问题内容: 我们有一个大型的golang应用程序,它使用记录器(实际上是自定义记录器)将输出写入定期轮换的日志文件中。 但是,当应用程序崩溃或出现panic()时,这些消息将变为标准错误。 有什么方法可以覆盖使用记录仪的紧急功能? 问题答案: 据我所知,您无法将恐慌的输出重定向到标准错误或记录器。最好的办法是将标准错误重定向到可以在外部或在程序内部执行的文件。 对于我的rclone程序,我重定向了

  • 我想寻求帮助,了解如何在JUnit测试中捕获IOException,以测试我的代码在发生错误时是否会抛出正确的异常。 以下是我的主要代码: 这是我的JUnit: 我想我必须在JUnit测试中创建一个错误的路径来抛出该异常,但我没能得到我想要的结果。我很感谢你的帮助。谢谢

  • 问题内容: 我在游乐场中获得了以下代码: 因此很明显,该函数会引发错误: 执行被中断,原因:EXC_BAD_INSTRUCTION 有没有办法抓住这个?我在线阅读文章,为Array类编写一个下标,该下标始终检查范围,但问题更大:我无法捕捉任何东西吗? 问题答案: 在Swift中,您什么都做不到。您只能赶上 错误 与抛出由被称为目标C代码的其他银行代码或错误,类型NSError一套说法。 默认的数组

  • 问题内容: 我使用jQuery向服务器发出AJAX POST请求,该请求可以返回状态为302的HTTP响应。然后JavaScript只是将GET请求发送到此URL,而我想在此响应中将用户重定向到URL。这可能吗? 问题答案: 由于给出的原因,接受的答案不起作用。我发表了评论,并提供了一个指向问题的链接,该问题描述了一种黑客程序 但是,这有点肮脏,在深入研究之后,我发现我认为是更好的解决方案- 使用

  • 我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。

  • 我试图创建一个测试来验证我的代码(见下面的伪代码)是否正确捕获异常。我知道JUnit能够测试代码是否用以下代码抛出异常: 然而,我正在测试的软件的原始代码捕获了这个异常并打印了一条消息 JUnit是否有办法验证此消息?或者我应该改变一下我的流行语? 注:我已阅读,我应使用以下内容: 但是程序崩溃,因为它无法识别对象。 我尝试测试的方法的伪代码(出于隐私原因,不要发布确切的内容):