从javascript onload 事件执行managebean 方法
如何发出 ajax 请求来从 javascript 更新
?我目前正在使用 @Postconstruct 加载初始数据,但这会显着延迟初始页面加载。
我正在考虑使用 HTML 标记的
onload
事件来触发请求并更新数据表。
How can I make an ajax request that updates a <h:dataTable>
from javascript? I am currently loading the initial data using @Postconstruct
but that is significantly delaying the initial page load.
I am thinking about using onload
event of <body>
HTML tag to fire the request and update the datatable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从理论上讲,以下内容应该可以做到这一点。
但是
,由于某种原因,这不受支持。我曾经发布过关于此问题的问题报告。
以下内容有效,但本质上是一种 hack。
如果您碰巧使用 PrimeFaces,那么您可以使用其
与
autoRun
设置为true
。或者,如果您使用 OmniFaces,则可以使用其
渲染位于
末尾。即将推出的 OmniFaces 2.2 将通过新的
autorun
属性消除这一需求。In theory the following should do it.
with
However, this is not supported for some reason. I've ever posted an issue report about that.
The following works, but it's in essence a hack.
If you happen to use PrimeFaces, then you can use its
<p:remoteCommand>
withautoRun
set totrue
.Or if you're using OmniFaces, then you can use its
<o:commandScript>
The
<h:outputScript target="body">
renders the<script>
in the end of the<body>
. The upcoming OmniFaces 2.2 will remove this need by newautorun
attribute.在 jsf2.0 中,您可以在几乎任何其他 jsf 标签中使用 f:ajax 标签,例如
在本例中, someMethod 在“myComponent”selectOneRadio 的 javasript onClick 事件中执行
不确定这是否是您想要的......
in jsf2.0 you can use the f:ajax tag in almost any other jsf tag e.g
In this example the someMethod is excuted in the javasript onClick event for the "myComponent" selectOneRadio
Not sure if this is what you are after ....
我通过使用元数据函数解决了这个问题,因为我无法使用@PostContruct(FacesMessages 被排队并且在构造后方法中抛出时不显示... 请参阅最后一条评论)
我对 JSF 很陌生,所以......
我不太了解 JSF 的生命周期阶段,但这个解决方案对我有用。
I solved it by using the Metadata-Functions, as I could not use @PostContruct (FacesMessages are enqueued and not displayed when thrown in postconstruct mehtod... see last comment)
I am very new to JSF so ...
I DO NOT know very much about JSF's lifecycle phases, but this solution worked for me.