【问题标题】:Richfaces inputText onBlur and commandButton onClickRichfaces inputText onBlur 和 commandButton onClick
【发布时间】:2011-08-28 08:15:33
【问题描述】:

我有一个包含两个文本字段和一个commandButton 的页面,在其中一个文本字段onBlur 我在bean 和commandButton 中调用onBlur() 方法,我在调用onClick() bean 中的方法,除了当我单击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!" />

豆子

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);
    }
}

【问题讨论】:

  • 如果你提供'xhtml文件和bean'会很好
  • @Andreay 我不能在这里附加文件,但我用代码更新了我的帖子

标签: jsf richfaces


【解决方案1】:

有问题的指定示例工作正常(两种方法都在 onBlur 和 onClick 中调用)。 在您的情况下,您似乎有 a4j:status 阻止用户点击的组件(例如用不可见的 div 覆盖布局)。

要验证我的假设,请尝试以下操作(删除status 属性,添加a4j:region):

<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!" />

【讨论】:

  • Andrey,如果 a4j:status 被删除,它的工作但要求是我们必须在当前请求之前阻止表单中的任何修改。有什么办法可以做到吗?
  • @Karthikeyan 根据该要求,您的表单按预期工作(在处理请求之前阻止修改/按钮单击)。您需要输入周围的 a4j:region 和不阻止按钮的区域内的自定义 a4j:status 。就我个人而言,我更喜欢不阻塞模糊事件(只需用 a4j:region 包装输入)。
猜你喜欢
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 2010-12-26
  • 1970-01-01
  • 2013-07-20
  • 2011-09-15
  • 1970-01-01
相关资源
最近更新 更多