我有以下代码用于执行,但它提供了一些与ajax请求相关的问题。
actionListener调用按钮单击
<a4j:commandButton value="Submit" alt="OligoWalk" styleClass="common_button" onclick="createNewLog();showProgressLayer();" oncomplete="parent.document.getElementById('resultFrm').src ='#{MyResearchView.resultToShow}';parent.reRenderLogSection();" actionListener="#{MyResearchView.executeTool}"> <f:attribute name="toolClass" value="com.sequerome.service.impl.tools.Oligowalk" />
<f:attribute name="toolId" value="#{ToolCustomeFormView.toolId}" /> <f:attribute name="toolName" value="#{ToolCustomeFormView.toolName}" /> <f:attribute name="inputParamFile" value="#{ToolCustomeFormView.inputParamFile}" />
<f:attribute name="paramMap" value="#{ToolCustomeFormView.toolParamBean.paramMap}" />
</a4j:commandButton>
A4j:jsFunction
<a4j:jsFunction name="createNewLog"
actionListener="#{MyResearchView.createNewLogEntry}"
oncomplete="parent.reRenderLogSection();executeTool();">
<f:attribute name="toolId" value="#{ToolCustomeFormView.toolId}" />
<f:attribute name="toolName" value="#{ToolCustomeFormView.toolName}"/></a4j:jsFunction>
目前它以相同的方式调用,但是createNewLog()函数的一半先执行,然后执行executeTool()函数。这里需要执行一些代码,然后再向createNewlog()函数移动。在此之后执行createNewLog(),然后再次执行executeTool()。
<a4j:commandButton value="Submit" alt="OligoWalk" styleClass="common_button" onclick="createNewLog();showProgressLayer();" oncomplete="parent.document.getElementById('resultFrm').src ='#{MyResearchView.resultToShow}';parent.reRenderLogSection();" actionListener="#{MyResearchView.executeTool}"> <f:attribute name="toolClass" value="com.sequerome.service.impl.tools.Oligowalk" />
<f:attribute name="toolId" value="#{ToolCustomeFormView.toolId}" /> <f:attribute name="toolName" value="#{ToolCustomeFormView.toolName}" /> <f:attribute name="inputParamFile" value="#{ToolCustomeFormView.inputParamFile}" />
<f:attribute name="paramMap" value="#{ToolCustomeFormView.toolParamBean.paramMap}" />
</a4j:commandButton>
<a4j:jsFunction name="createNewLog"
actionListener="#{MyResearchView.createNewLogEntry}"
oncomplete="parent.reRenderLogSection();executeTool();">
<f:attribute name="toolId" value="#{ToolCustomeFormView.toolId}" />
<f:attribute name="toolName" value="#{ToolCustomeFormView.toolName}"/></a4j:jsFunction>
答案 0 :(得分:0)
不确定你的目标是什么。一些代码会有所帮助。对于a4j:jsFunction,有一个名为oncomplete的javascript事件。我想一种方法是在收到此事件时调用其他js函数...
答案 1 :(得分:0)
症状可能是a4j:函数是异步函数的结果。我相信幕后发生的事情是:
解决方案是在客户端添加queues,在服务器端添加synchronization。