2010-05-24 1 views
0

Я определяю некоторые функции Java скрипт, который будет вызывать фонами функции, используя a4j: jsFunction.For пример:Вызов другого a4j: Функция JsFunction в a4j: Функция JsFunction OnComplete событие

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

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

Тогда в a4j: CommandButton я установил OnClick свойство называть мою определенную функцию, как это:

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

Когда a4j: CommandButton щелкают, # {Bean1.action1} выполняется .После # {} Bean1.action1 вернулся в OnComplete событие (a4j: jsFunction name = "function1") не может вызывать «# Bean 1.action2} ". Как я могу решить эту проблему?

+0

вы проверить консоли JavaScript (в Firefox) – Bozho

ответ

3

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