【问题标题】:JSF Delay rendering of a componentJSF 延迟渲染组件
【发布时间】:2011-07-07 23:23:41
【问题描述】:

我正在使用带有香草 Mojarra 的 JSF/2.0。

我在屏幕上加载了一个客户列表,在屏幕加载 10 秒后,我想在每个客户名称旁边放置一个单独的美元值。

我正在考虑扩展现有的 JSF 组件来执行此操作。最好的方法是什么?

JG

【问题讨论】:

    标签: ajax jsf jsf-2 delayed-execution mojarra


    【解决方案1】:

    调用必须来自客户端,因为标准 HTTP 协议不允许服务器端将内容推送到客户端。从 JavaScript 的 setTimeout() 函数开始。

    <script>setTimeout(functionName, 10000);</script>
    

    您可以使用纯 JS(甚至 jQuery)来进行更改。如果您需要调用 JSF 操作,请调用 jsf.ajax.request() 函数。

    【讨论】:

    • 是否可以使用 jsf.ajax.request() 来执行 bean 方法?例如#{myBean.calculateDollarValues} 这样他就可以访问更新的属性。从文档中似乎并不清楚,该示例向我建议执行实际上会点击命令按钮 - 但它没有。
    • @Toskan:仅当组件存在于视图中,或者当您使用不呈现任何内容但在decode() 中考虑到它的自定义组件时。
    • 啊...好吧。我知道要执行某些事情,您需要一个组件(例如 h:commandLink),它在任何情况下都可以为您完成(无论是 hacky 未渲染、隐藏还是只是简单可见)。但是,您将如何使用 js 函数 jsf.ajax.request 提交该 commandLink?
    猜你喜欢
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多