在我的JSF页面中,我有一个带有inputText,outputText和submit按钮的隐藏表单。我正在使用一个脚本,在某些事件中填充inputText并执行单击按钮。该按钮调用支持bean中的方法,我需要在其中执行一些操作,然后设置outputText的值。为此,我找到了UIOutput组件并设置了它的值。在我的javascript中,我需要在单击按钮后执行一些其他操作,但问题是可能需要一些时间才能完成操作并且outputText将填充返回值。因此,javascript中的下一个操作不会读取正确的值。我想在outputText上添加一个更改事件,以便仅在更新值后执行我的操作,但我遇到与此JS Events: hooking on value change event on text inputs相同的问题。
答案 0 :(得分:2)
因此,如果您使用a4j:commandButton
,则可以将oncomplete
属性用于完成AJAX请求后将执行的某些JS代码。
由于您使用h:commandButton
f:ajax
,所以这样做的方法是使用f:ajax属性onevent
,并检查它是否成功:
<script>
function doWhatever(e){
if(e.status == 'success'){
doYourThingHere();
}
}
</script>
<h:commandButton action="#{someMB.someAction}">
<f:ajax ... onevent="doWhatever" />
</h:commandButton>
如果您使用Richfaces,您可能需要查看a4j:ajax
组件,请参阅this question。
UPDATE:删除了假定请求未成功的其他错误。请参阅the answer to this question以查看状态属性的其他含义。