我定义了一些Java脚本函数,它会调用使用A4J后端功能:jsFunction.For例如:
<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名= “功能1”)不能援引“#{Bean1。动作2}”我。怎么能解决这个问题?
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;
}