调用bean方法失去焦点

时间:2013-11-14 04:54:15

标签: jsf-2

如何在焦点丢失时调用bean方法?

我试过了,

<h:inputText id="receipeCode" value="#{receipeBean.receipeCode}" 
    onfocuslost="#{receipeBean.view}" />

但是,当光标移动到下一个输入字段时,不会调用该方法。

1 个答案:

答案 0 :(得分:3)

“焦点丢失”事件称为“模糊”事件。所以,你基本上需要onblur

<h:inputText ... onblur="#{receipeBean.view}">

但是,这不会在模糊时调用指定的方法。这只是在生成HTML输出期间将view属性打印为表示某些JavaScript代码的String。它期待一个像这样的getter方法:

public String getView() {
    return "alert('peek-a-boo')";
}

如果你实际上有一个view()方法,那么你将面临一个PropertyNotFoundException。而且,这并不是“在模糊时调用bean方法”。这更像是“生成应该模糊运行的JavaScript代码”。

为了在模糊时实际调用JSF支持bean方法,您需要<f:ajax>

<h:inputText ...>
    <f:ajax event="blur" listener="#{receipeBean.view}" />
</h:inputText>