可以为`p:inputText`执行`valueChangeListener`而无需点击`enter`键?

Dan*_*jel 5 jsf primefaces jsf-2

我想执行valueChangeListenerp:inputText,当用户改变文字的inputText失去对焦(平变化).这可能吗?现在它只在我按下返回后执行.

Bal*_*usC 18

valueChangeListener方法需要调用表单提交.这是服务器端事件,而不是客户端事件.只是更改和模糊输入默认情况下根本不提交表单.带来一个<p:ajax>做神奇的事.

<p:inputText value="#{bean.inputValue}" valueChangeListener="#{bean.inputChanged}">
    <p:ajax />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

但是,虽然您没有说出您认为这是正确解决方案的具体功能要求,但我只是想提一下,valueChangeListener对于您的工作而言,这通常是错误的工具.请<p:ajax listener>改用.

<p:inputText value="#{bean.inputValue}">
    <p:ajax listener="#{bean.inputChanged}" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

请注意,这将使得通过EL 2.2传递方法参数成为可能,这将立即回答您的另一个可能的潜在功能要求- 实际上非常差 - 问题.

<p:inputText value="#{bean.inputValue}">
    <p:ajax listener="#{bean.inputChanged('arg1', 'arg2')}" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

另请注意,如果您真正对输入的值感兴趣,这可能根本不是解决方案; 你可以直接访问该inputValue物业.

也可以看看: