5

我想在用户更改文本并且 inputText 失去焦点(onchange)时执行valueChangeListenerp:inputText这可能吗?现在它只在我按回车后执行。

4

1 回答 1

20

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

<p:inputText value="#{bean.inputValue}" valueChangeListener="#{bean.inputChanged}">
    <p:ajax />
</p:inputText>

但是,尽管您没有说明您认为这是正确解决方案的具体功能需求,但我只想提一下,valueChangeListener对于您心目中的工作而言,这往往是错误的工具。改为使用<p:ajax listener>

<p:inputText value="#{bean.inputValue}">
    <p:ajax listener="#{bean.inputChanged}" />
</p:inputText>

请注意,这将使得通过 EL 2.2 传递方法参数成为可能,这将立即回答您的另一个问题(实际上很差)可能存在的潜在功能需求。

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

另请注意,如果您实际上对输入的值感兴趣,这可能根本不是解决方案;您可以直接访问该inputValue属性。

也可以看看:

于 2012-12-20T15:41:04.893 回答