将JS动作与JSF同步

时间:2012-07-04 15:39:09

标签: javascript jsf jsf-2 onchange

在我的JSF页面中,我有一个带有inputText,outputText和submit按钮的隐藏表单。我正在使用一个脚本,在某些事件中填充inputText并执行单击按钮。该按钮调用支持bean中的方法,我需要在其中执行一些操作,然后设置outputText的值。为此,我找到了UIOutput组件并设置了它的值。在我的javascript中,我需要在单击按钮后执行一些其他操作,但问题是可能需要一些时间才能完成操作并且outputText将填充返回值。因此,javascript中的下一个操作不会读取正确的值。我想在outputText上添加一个更改事件,以便仅在更新值后执行我的操作,但我遇到与此JS Events: hooking on value change event on text inputs相同的问题。

1 个答案:

答案 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以查看状态属性的其他含义。