每次JSF ajax回发后执行JavaScript

每次JSF ajax回发后执行JavaScript,第1张

每次JSF ajax回发后执行JavaScript

您可以通过以下方式将其注册为JSF
ajax回调处理程序

jsf.ajax.addOnEvent

<script>    jsf.ajax.addonEvent(foo);</script>

<script>    function foo(data) {        var ajaxStatus = data.status; // Can be "begin", "complete" and "success".        switch (ajaxStatus) { case "begin": // Right before sending ajax request.     // ...     break; case "complete": // Right after receiving ajax response.     // ...     break; case "success": // When ajax response is successfully processed.     // ...     break;        }    }</script>

其中该

data
对象具有几个有用的XHR派生属性,这些属性在JSF
2.0规范的
表14-4中进行了描述(单击“
评估” 链接)。这是相关的摘录:

表14-4 事件数据有效负载

    名称说明/值    ------------- -----------------------------------------------------

    输入“事件”    状态表14-3中指定的事件之一    source触发Ajax请求的DOM元素。    responseCode Ajax请求对象“状态”(XMLHttpRequest.status);        对于“开始”事件不存在;    responseXML XML响应(XMLHttpRequest.responseXML);        对于“开始”事件不存在;    responseText文本响应(XMLHttpResponse.responseTxt);        对于“开始”事件不存在;

作为一种替代方法,一种XHTML声明性的方法是将脚本调用仅嵌入到带有的JSF组件中,

id
然后让ajax调用重新呈现它。该组件应依次根据来有条件地呈现脚本
FacesContext#isPostback()

<h:form>    <h:commandButton value="Submit" action="#{bean.submit}">        <f:ajax render=":myscript">    </h:commandButton></h:form><h:panelGroup id="myscript">    <h:outputscript rendered="#{facesContext.postback}">foo();</h:outputscript></h:panelGroup>

但是,大多数组件库对此都有更好的抽象支持。由于您没有提到要使用哪个选项,因此可以给出更合适的答案,因此,这只是一个基于PrimeFaces命令按钮的随机示例。

<p:commandButton value="Submit" action="#{bean.submit}" oncomplete="foo();" />

请参阅所用组件库的文档。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4942222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存