javascript - 将 JS 操作与 JSF 同步

标签 javascript jsf jsf-2 onchange

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

最佳答案

因此,如果您使用 a4j:commandButton,则只需对完成 AJAX 请求后执行的某些 JS 代码使用 oncomplete 属性即可。

由于您将 h:commandButtonf: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 .

更新:删除了假定请求未成功的不正确的其他内容。请参阅the answer to this question查看状态属性的其他含义。

关于javascript - 将 JS 操作与 JSF 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11332089/

相关文章:

javascript - 使用 dragula 重新排序时如何保留对象属性?

javascript - 使 <li> 标签可编辑

Eclipse 3.2 中的 java 服务器界面

java - 使动态创建的 AttributeDefImpl 在填充后只读

java - 确定绝对id

javascript - noUiSlider 长数舍入错误

javascript - Node 执行()不触发所有数据事件

jsf - 两个不同的 SelectItem 返回单个选定值

java - 在 JSF 2.0 应用程序中使用 UTF-8 编码的 i18n 属性文件

java - 如何在 JSF 2x 中使用结果并在地址栏中保留相同的 url?