我有 a4j:outputPanel 。我通过点击页面中的其他位置重新表示我想要在重新呈现outputPanel
时触发操作。
是否有事件发生?我尝试过但我已经搜索过但我无法做到我想要的。 我知道我可以使用oncomplete事件来解雇rerender操作但是这样 我不想做的事。
无论如何,你有什么想法吗?我不需要确切的解决方案,只是想法可以帮助我找到这样做的方法。
编辑:对不起,我想要解决的动作是js动作。
答案 0 :(得分:1)
尝试放置
<f:event listener="#{myBean.myAction}" type="preRenderComponent"></f:event>
在outputPanel
...
public void myAction(ComponentSystemEvent componentSystemEvent) {
//some code goes here...
}
如果要从托管bean方法调用js代码,可以使用Primefaces - RequestContext
public void myAction(ComponentSystemEvent componentSystemEvent) {
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.execute("alert('wow')");
}
答案 1 :(得分:0)
如果你确定该动作重新渲染组件,那么为什么不将它添加到动作本身。您还可以使用Daniel建议的方法并从Java方法添加JavaScript调用。 Icefaces附带一个JavaScript上下文类,我相信richfaces会有类似的东西。
答案 2 :(得分:0)
尝试onbeforedomupdate
组件的<a4j:ajax/>
<a4j:outputPanel>
<a4j:ajax onbeforedomupdate="yourJs();"/>
</a4j:outputPanel>