在ap:inputText中按下Enter时如何调用方法

mal*_*jun 0 jsf primefaces

我有一个JSF ajax keydown事件链接到备用bean中的事件侦听器。

JSF文件中的代码如下。

<p:inputText value="#{someBean.value}>
<p:ajax event="keydown" listener="#{someBean.keyDownEvent}" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

我想获取“输入”按钮事件代码。当我单击Enter时,我需要在服务器端执行一些特定的事件。如何使用ajax调用获取事件代码?

Jas*_*ies 5

因为您只想在Enter按下键时执行操作,所以我真的不会使用Ajax调用将每个键发送到后端,而是确定按下了哪个键。

只需检查前端是否有回车,如果刚检测到,则使用调用后端p:remoteCommand。但是这里有一个陷阱。输入woud提交默认情况下,整个表单,所以一定要回false的时候keyCode为输入(13)被发现。

然后,进行验证。如果您碰巧在表单中有多个输入,则可能会遇到验证错误。因此,将远程命令设置为仅处理自身和按下Enter键的输入。(可选)您可能希望更新p:message链接到输入的字段以显示任何验证错误。

这将导致:

<p:remoteCommand name="myRemCo"
                 action="#{someBean.action}"
                 process="@this myInput"
                 update="myInputMessage"/>

<p:inputText id="myInput"
             value="#{someBean.value}"
             onkeydown="if (event.keyCode === 13) { myRemCo(); return false; }"
             required="true"/>
<p:message for="myInput" id="myInputMessage"/>
Run Code Online (Sandbox Code Playgroud)

请注意,required="true"在输入仍然为空的情况下,如果您按Enter键,我将在那里演示如何更新消息。

也可以看看: