在JSF 2的AjaxBehaviorEvent中捕获KeyCode

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

JSF文件中的代码如下所示。

   

支持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预先填充。 例如,

     

(请注意隐藏字段的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参考中找到所有有效keyCode值的概述。