0

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

4

1 回答 1

2

因此,如果您使用的是a4j:commandButton,则可以将oncomplete属性用于某些 JS 代码,这些代码将在完成 AJAX 请求后执行。

由于您使用的是 ah:commandButton和 an 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组件,请参阅此问题

更新:删除不正确的 else 假设请求没有成功。请参阅此问题的答案以查看 status 属性的其他含义。

于 2012-07-04T17:51:55.957 回答