2011-03-03 130 views
0

我使用JSF/2.0和香草Mojarra。JSF组件的延迟渲染

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

我想扩展现有的JSF组件来做到这一点。什么是最好的方法来做到这一点?

JG

回答

1

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

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

你可以使用普通的JS(甚至jQuery)来做这些改变。如果您需要调用JSF操作,请调用jsf.ajax.request()函数。

+0

jsf.ajax.request()是否可以执行bean方法?例如#{myBean.calculateDollarValues},之后他可以访问更新的属性。从文档中看不出这个例子,这个例子告诉我执行实际上会触发commandButton - 但事实并非如此。 – Toskan 2012-01-10 16:45:17

+0

@Toskan:只有当组件存在于视图中,或者当您使用自定义组件时,它不会呈现任何内容,但会在decode()中考虑它。 – BalusC 2012-01-10 16:51:52

+0

啊...好吧。我明白,要执行一些你需要的组件(例如h:commandLink),它无论如何都会为你做(不管怎样hacky没有渲染,隐藏或只是明显可见)。但是,如何使用js函数jsf.ajax.request提交该commandLink? – Toskan 2012-01-10 17:08:26