Jsf Richfaces inputText onBlur和commandButton onClick

Jsf Richfaces inputText onBlur和commandButton onClick,jsf,richfaces,Jsf,Richfaces,我有一个页面,有两个文本字段和一个commandButton,在其中一个文本字段onBlur中,我在bean中调用onBlur()方法,在commandButton中,我在bean中调用onClick()方法,除了单击commandButton外,所有操作都可以正常工作。如果焦点位于带有onBlur的文本框上,则仅调用onBlur方法,而不是同时调用这两个方法。我已经附加了xhtml文件和bean XHTML代码 <h:inputText id="service" value="#{onB

我有一个页面,有两个文本字段和一个
commandButton
,在其中一个文本字段
onBlur
中,我在bean中调用
onBlur()
方法,在
commandButton
中,我在bean中调用
onClick()
方法,除了单击
commandButton
外,所有操作都可以正常工作。如果焦点位于带有
onBlur
的文本框上,则仅调用
onBlur
方法,而不是同时调用这两个方法。我已经附加了xhtml文件和bean

XHTML代码

<h:inputText id="service" value="#{onBlurTestBean.service}">
  <a4j:support status="test" event="onblur"
    action="#{onBlurTestBean.onBlur}"  reRender="category" />
</h:inputText>
<a4j:htmlCommandLink id="submit" action="#{onBlurTestBean.onClick}"
  ajaxSingle="true" value="Click!" />

所讨论的指定示例工作正常(这两个方法都在onBlur和onClick上调用)。 在您的情况下,您似乎拥有阻止用户单击的
a4j:status
组件(例如,用不可见的div覆盖布局)

要验证我的假设,请尝试以下操作(
status
attribute removed,
a4j:region
added):



如果您提供“xhtml文件和bean”,那就太好了@Andreay我不能在这里附加文件,但我用codeAndrey更新了我的帖子,如果a4j:状态被删除,但要求我们必须在当前请求之前阻止对表单的任何修改。有什么办法可以做到这一点吗?@Karthikeyan根据这一要求,您的表单按预期工作(阻止修改/按钮单击,直到请求得到处理)。您需要输入周围的a4j:region和不阻止按钮的区域内的自定义a4j:status。就我个人而言,我更喜欢在模糊事件上没有阻塞(只需使用a4j:region包装输入)。
public class OnBlurTestBean {
    private String service;
    private String category;
    public void initialize(){
    }
    public void onBlur(){
        log("onBlur");
        try{
            Thread.sleep(1000);
        }catch(Exception e){

        }
    }
    public void onClick(){
        log("OnClick");
    }
    public void log(String msg){
        System.out.println(msg);
    }
}
<a4j:region>
    <h:inputText id="service" value="#{onBlurTestBean.service}">
        <a4j:support event="onblur"
            action="#{onBlurTestBean.onBlur}"  reRender="category" />
    </h:inputText>
</a4j:region>
<a4j:htmlCommandLink id="submit" action="#{onBlurTestBean.onClick}"
        ajaxSingle="true" value="Click!" />