我需要侦听器函数来检测用户何时清除inputText字段。当文本字段有一个新的字符串输入时,后台bean的值会立即更新,然后调用监听器函数,但是,通过调试,我注意到当一个字符串被清除时,后台bean变量没有被设置为null直到听众回来之后。由于我的侦听器函数依赖于(backingBeanvariable == null)测试,这导致了我的功能错误。有没有办法解决这个问题?JSF Ajax侦听器需要知道文本字段为空时
我的XHTML:
<p:column>
<p:inputText id="inputText" value="#{backingBean.variable}"
title="someTitle">
<p:ajax resetValues="true" listener="#{backingBean.onChange()}" />
</p:inputText>
</p:column>
辅助Bean监听功能:
public void onUiiTypeChange()
{
if (variable == null)
{
// some logic
}
}
编辑:当字段被清除的变量可能会设置为空字符串reather比空。无论哪种方式,直到侦听器函数返回后才会发生这种情况。即如果该字段在被清除之前包含“asdf”,那么当调用监听器函数时该变量仍将被设置为“asdf”。
仅供参考,您的示例在我的设置中正常工作,我无法重现。似乎存在不一致性,正如您所说的通过调试所看到的那样,在侦听器被调用后该字段已更新为null,但是然后您正确地注意到该变量可能已设置为空字符串(即默认行为)。所以更彻底的调试可能会告诉你发生了什么。 – kingdc
请按照http://www.stackoverflow.com/tags/jsf/info – Kukeltje