【问题标题】:f:ajax onerror called before listenerf:ajax onerror 在监听器之前调用
【发布时间】:2012-07-06 06:02:08
【问题描述】:

我有一个简单的表单和一个非常简单的 bean,它可以监听 ajax 事件。以下是部分代码:

<script type="text/javascript">
    function myfunction() {
         alert('error');
    }
</script>
<h:commandButton  id="someid" value="somevalue" >
   <f:ajax event="click" execute="someids" listener="#{MyBean.fireEvent}" onerror="myfunction()"  />    
</h:commandButton>

我在调试中使用 Eclipse 来查看何时调用 MyBean.fireEvent 以及在执行 onerror="myfunction()" 之后调用它。这可能是什么原因?

我正在使用带有 Resin 的 mojarra 2.0。

谢谢。

【问题讨论】:

  • 想出了如何让它工作。在myfunction() 定义之上,我添加了jsf.ajax.addOnError(myfunction); 并从ajax 标记中删除了onerror="myfunction()" 属性。我仍然很好奇为什么 onerror 属性不起作用。

标签: javascript ajax jsf jsf-2 mojarra


【解决方案1】:

onerror 属性必须指向函数名本身,而不是函数的返回值。

所以,如果你替换

onerror="myfunction()" 

通过

onerror="myfunction" 

那么它应该按预期工作。

【讨论】:

    【解决方案2】:

    看起来是格式问题,不妨试试:

    <script type="text/javascript">
      function myfunction(error) {
         alert(error.description);
      }
    </script>
    
    <h:commandButton  id="someid" value="somevalue" >
      <f:ajax event="click" 
           execute="someids" 
           listener="#{MyBean.fireEvent}" 
           onerror="myfunction" />    
    </h:commandButton>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-02
      • 2014-09-14
      • 2015-05-08
      • 2012-01-25
      • 2012-08-06
      • 1970-01-01
      • 2011-06-21
      • 2012-08-26
      相关资源
      最近更新 更多