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

时间:2012-12-20 15:05:01

标签: jsf jsf-2 primefaces

当用户更改文本并且inputText失去焦点(onchange)时,我想为valueChangeListener执行p:inputText。这可能吗?现在它只在我按下返回后执行。

1 个答案:

答案 0 :(得分:17)

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

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

然而,虽然you didn't tell anything about the concrete functional requirement for which you thought that this is the right solution,但我只是想提一下valueChangeListener对于你想到的工作来说往往是错误的工具。请改用<p:ajax listener>

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

请注意,这样就可以通过EL 2.2传递方法参数,然后立即回答your other — actually pretty poor — question可能的基本功能要求。

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

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

另见: