oncomplete事件中调用另一个a4j

oncomplete事件中调用另一个a4j

本文介绍了在a4j:jsFunction oncomplete事件中调用另一个a4j:jsFunction的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我定义了一些Java脚本函数,它们将使用a4j:jsFunction调用后端函数,例如:

I define some java script function which will call the back-end functions using a4j:jsFunction.For example :

<a4j:jsFunction name="function1"  action="#{Bean1.action1}" oncomplete="function2();"/>

<a4j:jsFunction name="function2"  action="#{Bean1.action2}" oncomplete="SomeJSFunc2();"/>

然后在a4j:commandButton中,将onclick属性设置为像这样调用我定义的函数:

Then in the a4j:commandButton , I set the onclick property to call my defined function like it:

<a4j:commandButton onclick="function1" oncomplete="SomeJSFunc3();">

单击a4j:commandButton时,将运行#{Bean1.action1}.返回#{Bean1.action1}后,(a4j:jsFunction name ="function1")的oncomplete事件无法调用#{Bean1.action2}".如何解决此问题?

When the a4j:commandButton is clicked , #{Bean1.action1} is run .After the #{Bean1.action1} returned , the oncomplete event of the (a4j:jsFunction name="function1")cannot invoke the "#{Bean1.action2}" .How can I solve this problem?

推荐答案

jsf页面:

  <a4j:commandButton
      oncomplete="switchTab(1);"
      action="#{backBean.actionSwitchTab4}"
      value="#{res['button_forward']}c" styleClass="button" />
  <a4j:jsFunction id="testFunc" name="switchTab"
      action="#{backBean.actionSwitchTab}"
      oncomplete="switchTab2(6);">
      <a4j:actionparam name="tabIndex" assignTo="#{backBean.tabIndexTl}" />
  </a4j:jsFunction>
  <a4j:jsFunction id="testFunc2" name="switchTab2"
      action="#{backBean.actionSwitchTab2}"
      oncomplete="showConfirmPrompt();">
      <a4j:actionparam name="tabIndex" assignTo="#{backBean.tabIndexTi}" />
  </a4j:jsFunction>
  <a4j:jsFunction id="testFunc3" name="switchTab3"
      action="#{backBean.actionSwitchTab3}"
      oncomplete="alert('this is the end');">
      <a4j:actionparam name="tabIndex" assignTo="#{backBean.tabIndexTs}"/>
  </a4j:jsFunction>
  <script language="javascript" type="text/javascript">
   <!--
   function showConfirmPrompt() {
       if(confirm('Activate other a4j:jsFunction function')) {
           switchTab3('test');
           return true;
       }
       return false;
   }
   //-->
  </script>

backbean(java):

 private Integer tabIndexTi; // + GETTER, SETTER
 private String tabIndexTs;  // + GETTER, SETTER
 private Long tabIndexTl;    // + GETTER, SETTER

 public Object actionSwitchTab() {
   System.out.println("  >>>>> actionSwitchTab start; tabIndexTl: " + tabIndexTl);
   try {
     Thread.sleep(2000);
   } catch (InterruptedException ex) {
     ex.printStackTrace();
   }
   System.out.println("  >>>>> actionSwitchTab end");
   return null;
  }

  public Object actionSwitchTab2() {
   System.out.println("  >>>>> actionSwitchTab2 start; tabIndexTi: " + tabIndexTi);
   try {
     Thread.sleep(500);
   } catch (InterruptedException ex) {
     ex.printStackTrace();
   }
   System.out.println("  >>>>> actionSwitchTab2 end");
   return null;
  }

  public Object actionSwitchTab3() {
    System.out.println("  >>>>> actionSwitchTab3 start; tabIndexTs: " + tabIndexTs);
    try {
      Thread.sleep(3000);
    } catch (InterruptedException ex) {
      ex.printStackTrace();
    }
    System.out.println("  >>>>> actionSwitchTab3 end");
    return null;
  }

  public Object actionSwitchTab4() {
    System.out.println("  >>>>> actionSwitchTab4");
    return null;
  }

这篇关于在a4j:jsFunction oncomplete事件中调用另一个a4j:jsFunction的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 16:33